Re: Project - Mega Dracula - Help / Updates
Posted: Fri Sep 04, 2015 11:37 pm
Check your declarations. Do they have the same names as in the resource file? Are they the correct type?
Sega Megadrive/Genesis development
https://gendev.spritesmind.net/forum/
Code: Select all
void animateEnemy(Sprite headSprite, Sprite bodySprite)
Code: Select all
void VDP_fadeOut(u16 fromcol, u16 tocol, u16 numframe, u8 async);
Code: Select all
u16 VDP_isDoingFade();
Code: Select all
if (Dead == 0) {
VDP_fadeOut(32, 47, 20, TRUE);
if (VDP_isDoingFade == FALSE) {
SPR_clear();
drawnSprite = 0;
SubStageInt = 2;
}
}
Code: Select all
if (Dead == 0) {
VDP_fadeOut(32, 47, 20, TRUE);
if (VDP_isDoingFade == FALSE) {
SPR_clear();
drawnSprite = 0;
SubStageInt = 2;
}
}
Code: Select all
if (Dead == 0) { VDP_fadeOut(32, 47, 20, TRUE); if (VDP_isDoingFade == FALSE) { SPR_clear(); drawnSprite = 0; SubStageInt = 2; } }
Code: Select all
if (Dead == 0) {
VDP_fadeOut(32, 47, 20, FALSE);
SPR_clear();
drawnSprite = 0;
SubStageInt = 2;
}
Code: Select all
#include <genesis.h>
struct ScreenMessages
{
char line1[36];
char line2[36];
char line3[36];
};
u16 displayOnScreenMessages(struct ScreenMessages Messages);
u16 increment = 0;
u16 ind;
u16 stage = 0;
u16 textStage = 0;
u16 timerSeconds = 500;
u16 timer = 0;
char tempTextline[36];
struct ScreenMessages Messages;
int main()
{
// disable interrupt when accessing VDP
SYS_disableInts();
// initialization
VDP_setScreenWidth320();
// VDP process done, we can re enable interrupts
SYS_enableInts();
ind = TILE_USERINDEX;
while(TRUE)
{
switch (stage) {
case 0:
strcpy(Messages.line1, "1 2 3 4 5 6 7 8 9 10 11 12 13 15 16");
strcpy(Messages.line2, "17 18 19 20 21 22");
strcpy(Messages.line3, "23 24 25");
stage++;
break;
case 1:
if (displayOnScreenMessages(Messages) == TRUE) {
stage++;
}
break;
case 2:
VDP_drawText("Complete!", 14, 10);
stage++;
break;
}
}
return 0;
}
u16 displayOnScreenMessages(struct ScreenMessages Messages) {
char character[0];
u16 complete = FALSE;
switch(textStage) {
case 0:
increment = 0;
timer = 0;
strclr(tempTextline);
strcpy(tempTextline, Messages.line1);
textStage++;
break;
case 1:
if (timer == 0) {
if (increment <= sizeof(tempTextline)) {
character[0] = tempTextline[increment];
VDP_drawText(character, 2+increment, 23);
strclr(character);
timer = timerSeconds;
VDP_drawText(tempTextline, 2, 2);
increment++;
} else {
textStage++;
}
} else if (timer > 0) {
timer--;
}
break;
case 2:
increment = 0;
timer = 0;
strclr(tempTextline);
strcpy(tempTextline, Messages.line2);
textStage++;
break;
case 3:
if (timer == 0) {
if (increment <= sizeof(tempTextline)) {
character[0] = tempTextline[increment];
VDP_drawText(character, 2+increment, 24);
strclr(character);
timer = timerSeconds;
VDP_drawText(tempTextline, 2, 2);
increment++;
} else {
textStage++;
}
} else if (timer > 0) {
timer--;
}
break;
case 4:
increment = 0;
timer = 0;
strclr(tempTextline);
strcpy(tempTextline, Messages.line3);
textStage++;
break;
case 5:
if (timer == 0) {
if (increment <= sizeof(tempTextline)) {
character[0] = tempTextline[increment];
VDP_drawText(character, 2+increment, 25);
strclr(character);
timer = timerSeconds;
VDP_drawText(tempTextline, 2, 2);
increment++;
} else {
textStage = 0;
complete = TRUE;
}
} else if (timer > 0) {
timer--;
}
break;
}
return complete;
}
Code: Select all
VDP_setPalette(PAL3, ghoul_sprite.palette->data);
SPR_initSprite(&sprites[0], (SpriteDefinition*)&ghoul_sprite, EnemySpriteXInt, EnemySpriteYInt+40, TILE_ATTR(PAL3, TRUE, FALSE, FALSE));
Code: Select all
u16 writeOnScreenMessage(char message[], u16 messageRow) {
u16 completeOnScreenMessage = FALSE;
char character[0];
u16 stringLength = strlen(message) - 1;
if (timer == 0) {
if (increment <= stringLength) {
character[0] = message[increment];
VDP_drawText(character, 2+increment, messageRow);
strclr(character);
timer = timerSeconds;
increment++;
completeOnScreenMessage = FALSE;
} else {
timer = 0;
increment = 0;
completeOnScreenMessage = TRUE;
}
} else if (timer > 0) {
timer--;
completeOnScreenMessage = FALSE;
}
return completeOnScreenMessage;
}