ref: 54ee8d13478cc71fbc1f84aca71b391928fd8201
parent: d131737d2ec5d2b15d97ff18051d4b9407c3285d
parent: 4680607e593c9cb5e9b724fedb09e525ecb7c499
author: Gabriel Ravier <[email protected]>
date: Tue May 7 15:43:38 EDT 2019
Merge branch 'master' into addBetterMakefileDebugFlags
--- a/msvc2003/devilution/comparer-config.toml
+++ b/msvc2003/devilution/comparer-config.toml
@@ -12,6 +12,14 @@
size = 0x100
[[func]]
+name = "ActBack"
+addr = 0x402370
+
+[[func]]
+name = "PutBack"
+addr = 0x4023D0
+
+[[func]]
name = "PutFront"
addr = 0x402830
@@ -272,6 +280,14 @@
addr = 0x40AC90
[[func]]
+name = "LoadConfigData"
+addr = 0x40AD60
+
+[[func]]
+name = "DefaultConfigData"
+addr = 0x40AE30
+
+[[func]]
name = "Call_Escape"
addr = 0x40DD70
@@ -605,6 +621,18 @@
[[func]]
name = "PlaySoundObject"
addr = 0x420640
+
+[[func]]
+name = "TransferStage"
+addr = 0x420BE0
+
+[[func]]
+name = "ChangeMusic"
+addr = 0x420EE0
+
+[[func]]
+name = "ReCallMusic"
+addr = 0x420F50
[[func]]
name = "InitStar"
--- a/src/ArmsItem.cpp
+++ b/src/ArmsItem.cpp
@@ -158,9 +158,9 @@
{
int arms_num = 0;
int item_num = 0;
- while ( gArmsData[arms_num].code != 0 )
+ while (gArmsData[arms_num].code != 0)
++arms_num;
- while ( gItemData[item_num].code != 0 )
+ while (gItemData[item_num].code != 0)
++item_num;
if (arms_num == 0 && item_num == 0)
@@ -228,9 +228,9 @@
bChange = TRUE;
}
- if ( gKeyTrg & gKeyDown )
+ if (gKeyTrg & gKeyDown)
{
- if ( gSelectedItem / 6 == (item_num - 1) / 6 )
+ if (gSelectedItem / 6 == (item_num - 1) / 6)
gCampActive = FALSE;
else
gSelectedItem += 6;
@@ -325,7 +325,7 @@
PutNumber4(40 * i + (WINDOW_WIDTH - 224) / 2, (WINDOW_HEIGHT - 160) / 2, gArmsData[i].level, 0);
// Draw ammo
- if ( gArmsData[i].max_num )
+ if (gArmsData[i].max_num)
{
PutNumber4(40 * i + (WINDOW_WIDTH - 224) / 2, (WINDOW_HEIGHT - 144) / 2, gArmsData[i].num, 0);
PutNumber4(40 * i + (WINDOW_WIDTH - 224) / 2, (WINDOW_HEIGHT - 128) / 2, gArmsData[i].max_num, 0);
--- a/src/Back.cpp
+++ b/src/Back.cpp
@@ -21,7 +21,7 @@
// Unused, hilariously
color_black = GetCortBoxColor(RGB(0, 0, 0x10));
- //Get width and height
+ // Get width and height
char path[PATH_LENGTH];
sprintf(path, "%s/%s.pbm", gDataPath, fName);
@@ -38,8 +38,8 @@
// This is ridiculously platform-dependant:
// It should break on big-endian CPUs, and platforms
// where short isn't 16-bit and long isn't 32-bit.
- short bmp_header_buffer[7];
- long bmp_header_buffer2[10];
+ unsigned short bmp_header_buffer[7]; // These names aren't the original. This ruins the stack frame layout.
+ unsigned long bmp_header_buffer2[10];
fread(bmp_header_buffer, 14, 1, fp);
@@ -72,7 +72,7 @@
fclose(fp);
#endif
- //Set background stuff and load texture
+ // Set background stuff and load texture
gBack.flag = 1;
if (!ReloadBitmap_File(fName, SURFACE_ID_LEVEL_BACKGROUND))
return FALSE;
@@ -138,7 +138,7 @@
case 6:
case 7:
- //Sky
+ // Sky
static unsigned int fillNext;
fillNext = 0;
for (int y = 0; y < WINDOW_HEIGHT - 240 + 88; y += 88)
@@ -156,7 +156,7 @@
rect.right = 320;
PutBitmap4(&grcGame, (WINDOW_WIDTH - 320) / 2, WINDOW_HEIGHT - 240, &rect, SURFACE_ID_LEVEL_BACKGROUND);
- //Cloud layer 1
+ // Cloud layer 1
rect.top = 88;
rect.bottom = 123;
rect.left = gBack.fx / 2;
@@ -167,7 +167,7 @@
for (int i = 0; i < ((WINDOW_WIDTH - 1) / 320) + 1; i++)
PutBitmap4(&grcGame, (320 * (i + 1)) - gBack.fx / 2 % 320, 88 + (WINDOW_HEIGHT - 240), &rect, SURFACE_ID_LEVEL_BACKGROUND);
- //Cloud layer 2
+ // Cloud layer 2
rect.top = 123;
rect.bottom = 146;
rect.left = gBack.fx % 320;
@@ -178,7 +178,7 @@
for (int i = 0; i < ((WINDOW_WIDTH - 1) / 320) + 1; i++)
PutBitmap4(&grcGame, (320 * (i + 1)) - gBack.fx % 320, 123 + (WINDOW_HEIGHT - 240), &rect, SURFACE_ID_LEVEL_BACKGROUND);
- //Cloud layer 3
+ // Cloud layer 3
rect.top = 146;
rect.bottom = 176;
rect.left = 2 * gBack.fx % 320;
@@ -189,7 +189,7 @@
for (int i = 0; i < ((WINDOW_WIDTH - 1) / 320) + 1; i++)
PutBitmap4(&grcGame, (320 * (i + 1)) - 2 * gBack.fx % 320, 146 + (WINDOW_HEIGHT - 240), &rect, SURFACE_ID_LEVEL_BACKGROUND);
- //Cloud layer 4
+ // Cloud layer 4
rect.top = 176;
rect.bottom = 240;
rect.left = 4 * gBack.fx % 320;
@@ -248,18 +248,18 @@
}
- //Draw black bars
- if (!(g_GameFlags & 8)) //Detect if credits are running
+ // Draw black bars
+ if (!(g_GameFlags & 8)) // Detect if credits are running
{
- const bool fromFocus = (gStageNo == 31); //Get if we should only draw around a 320x240 area of the focus point
+ const bool fromFocus = (gStageNo == 31); // Get if we should only draw around a 320x240 area of the focus point
- //Get focus rect
+ // Get focus rect
int focusX = gFrame.x + (WINDOW_WIDTH << 8) - (320 << 8);
int focusY = gFrame.y + (WINDOW_HEIGHT << 8) - (240 << 8);
int focusR = focusX + (320 << 9);
int focusB = focusY + (240 << 9);
- //Get borders
+ // Get borders
const int barLeft = fromFocus ? focusX : -0x1000;
const int barTop = fromFocus ? focusY : -0x1000;
@@ -266,10 +266,10 @@
const int barRight = fromFocus ? focusR : (gMap.width << 13) - 0x1000;
const int barBottom = fromFocus ? focusB : (gMap.length << 13) - 0x1000;
- //Draw bars
+ // Draw bars
RECT barRect;
- //Left
+ // Left
barRect.left = 0;
barRect.top = 0;
barRect.right = (barLeft - gFrame.x) >> 9;
@@ -276,7 +276,7 @@
barRect.bottom = WINDOW_HEIGHT;
CortBox(&barRect, 0x000000);
- //Top
+ // Top
barRect.left = 0;
barRect.top = 0;
barRect.right = WINDOW_WIDTH;
@@ -283,7 +283,7 @@
barRect.bottom = (barTop - gFrame.y) >> 9;
CortBox(&barRect, 0x000000);
- //Right
+ // Right
barRect.left = (barRight - gFrame.x) >> 9;
barRect.top = 0;
barRect.right = WINDOW_WIDTH;
@@ -290,7 +290,7 @@
barRect.bottom = WINDOW_HEIGHT;
CortBox(&barRect, 0x000000);
- //Bottom
+ // Bottom
barRect.left = 0;
barRect.top = (barBottom - gFrame.y) >> 9;
barRect.right = WINDOW_WIDTH;
--- a/src/Boss.cpp
+++ b/src/Boss.cpp
@@ -97,7 +97,7 @@
if (gBul[bul].damage == -1)
continue;
- //Check if bullet touches boss
+ // Check if bullet touches boss
bHit = FALSE;
if (gBoss[bos].bits & npc_shootable
&& gBoss[bos].x - gBoss[bos].hit.back < gBul[bul].x + gBul[bul].enemyXL
@@ -114,7 +114,7 @@
if (bHit)
{
- //Damage boss
+ // Damage boss
if (gBoss[bos].bits & npc_shootable)
{
if (gBoss[bos].cond & 0x10)
--- a/src/BossAlmo1.cpp
+++ b/src/BossAlmo1.cpp
@@ -459,7 +459,7 @@
PlaySoundObject(101, 1);
}
- if ( npc->act_wait > 400 )
+ if (npc->act_wait > 400)
{
npc->act_no = 200;
gBoss[4].ani_no = 2;
--- a/src/BossBallos.cpp
+++ b/src/BossBallos.cpp
@@ -230,7 +230,7 @@
SetQuake2(30);
PlaySoundObject(44, 1);
- if ( gMC.y > npc->y + 0x6000 && gMC.x < npc->x + 0x3000 && gMC.x > npc->x - 0x3000 )
+ if (gMC.y > npc->y + 0x6000 && gMC.x < npc->x + 0x3000 && gMC.x > npc->x - 0x3000)
DamageMyChar(16);
for (i = 0; i < 0x10; ++i)
--- a/src/BossOhm.cpp
+++ b/src/BossOhm.cpp
@@ -183,7 +183,7 @@
gBoss[5].cond = 0x80;
break;
- case 20: //Rising out of the ground
+ case 20: // Rising out of the ground
gBoss[0].act_no = 30;
gBoss[0].act_wait = 0;
gBoss[0].ani_no = 0;
@@ -227,7 +227,7 @@
}
break;
- case 50: //Open mouth
+ case 50: // Open mouth
if (++gBoss[0].count1 > 2)
{
gBoss[0].count1 = 0;
@@ -244,7 +244,7 @@
}
break;
- case 60: //Shoot out of mouth
+ case 60: // Shoot out of mouth
if (++gBoss[0].act_wait > 20 && gBoss[0].act_wait < 80 && !(gBoss[0].act_wait % 3))
{
if (Random(0, 9) < 8)
@@ -263,7 +263,7 @@
}
break;
- case 70: //Close mouth
+ case 70: // Close mouth
if (++gBoss[0].count1 > 2)
{
gBoss[0].count1 = 0;
@@ -299,7 +299,7 @@
}
break;
- case 90: //Go back into the ground
+ case 90: // Go back into the ground
SetQuake(2);
gBoss[0].y += 0x200;
@@ -313,7 +313,7 @@
}
break;
- case 100: //Move to proper position for coming out of the ground
+ case 100: // Move to proper position for coming out of the ground
if (++gBoss[0].act_wait == 120)
{
gBoss[0].act_wait = 0;
--- a/src/BossTwinD.cpp
+++ b/src/BossTwinD.cpp
@@ -490,7 +490,7 @@
}
}
- if ( npc->count1 > 0x3FF )
+ if (npc->count1 > 0x3FF)
npc->count1 -= 0x400;
break;
--- a/src/BossX.cpp
+++ b/src/BossX.cpp
@@ -55,7 +55,7 @@
++npc->ani_no;
}
- if ( npc->ani_no > 3 )
+ if (npc->ani_no > 3)
npc->ani_no = 2;
npc->xm -= 0x20;
@@ -100,7 +100,7 @@
++npc->ani_no;
}
- if ( npc->ani_no > 5 )
+ if (npc->ani_no > 5)
npc->ani_no = 4;
npc->xm += 0x20;
--- a/src/Caret.cpp
+++ b/src/Caret.cpp
@@ -186,7 +186,7 @@
++crt->ani_no;
}
- if ( crt->ani_no > 6 )
+ if (crt->ani_no > 6)
crt->cond = 0;
crt->x += 0x80;
@@ -345,7 +345,7 @@
{
crt->ani_wait = 0;
if (++crt->ani_no > 1)
- crt->cond = 0;
+ crt->cond = 0;
}
crt->rect = rcLeft[crt->ani_no];
@@ -468,9 +468,8 @@
crt->rect = rcLeft[1];
}
-//Tables
-CARET_TABLE gCaretTable[18] =
-{
+// Tables
+CARET_TABLE gCaretTable[18] = {
{0, 0},
{0x800, 0x800},
{0x1000, 0x1000},
--- a/src/CommonDefines.h
+++ b/src/CommonDefines.h
@@ -1,6 +1,6 @@
#pragma once
-#define PATH_LENGTH 260 //Pixel had the path size locked to 260 (dangerously low), if you tried to open the executable in a path with more than around 220 characters, it'd crash.
+#define PATH_LENGTH 260 // Pixel had the path size locked to 260 (dangerously low), if you tried to open the executable in a path with more than around 220 characters, it'd crash.
#define WINDOW_WIDTH 320
#define WINDOW_HEIGHT 240
--- a/src/Config.cpp
+++ b/src/Config.cpp
@@ -11,7 +11,10 @@
#include "Tags.h"
#include "Types.h"
-bool LoadConfigData(CONFIG *conf)
+static const char* const config_filename = "Config.dat"; // Not the original name
+static const char* const config_magic = "DOUKUTSU20041206"; // Not the original name
+
+BOOL LoadConfigData(CONFIG *conf)
{
//Clear old config data
memset(conf, 0, sizeof(CONFIG));
@@ -18,14 +21,17 @@
//Get path
char path[PATH_LENGTH];
- sprintf(path, "%s/%s", gModulePath, "Config.dat");
+ sprintf(path, "%s/%s", gModulePath, config_filename);
//Open file
FILE *fp = fopen(path, "rb");
if (fp == NULL)
- return false;
+ return FALSE;
//Read data
+#ifdef NONPORTABLE
+ size_t fread_result = fread(conf, sizeof(CONFIG), 1, fp); // Not the original name
+#else
//Read the version id and font name
fread(conf->proof, sizeof(conf->proof), 1, fp);
fread(conf->font_name, sizeof(conf->font_name), 1, fp);
@@ -42,22 +48,32 @@
conf->bJoystick = File_ReadLE32(fp);
for (int button = 0; button < 8; button++)
conf->joystick_button[button] = File_ReadLE32(fp);
+#endif
//Close file
fclose(fp);
- //Check if version is correct, return that it succeeded
- if (!strcmp(conf->proof, "DOUKUTSU20041206"))
- return true;
+ //Check if version is not correct, and return if it failed
+#ifdef NONPORTABLE
+ if (fread_result != 1 || strcmp(conf->proof, config_magic))
+#else
+ if (strcmp(conf->proof, config_magic))
+#endif
+ {
+ memset(conf, 0, sizeof(CONFIG));
+ return FALSE;
+ }
- //If not, return that it failed
- return false;
+ return TRUE;
}
void DefaultConfigData(CONFIG *conf)
{
- //Claer old config data
+ //Clear old config data
memset(conf, 0, sizeof(CONFIG));
+
+ //Fun fact: The Linux port added this line:
+ //conf->display_mode = 1;
//Reset joystick settings (as these can't simply be set to 0)
conf->bJoystick = 1;
--- a/src/Config.h
+++ b/src/Config.h
@@ -2,6 +2,8 @@
#include <stdint.h>
+#include "WindowsWrapper.h"
+
struct CONFIG
{
char proof[0x20];
@@ -14,5 +16,5 @@
int32_t joystick_button[8];
};
-bool LoadConfigData(CONFIG *conf);
+BOOL LoadConfigData(CONFIG *conf);
void DefaultConfigData(CONFIG *conf);
--- a/src/Draw.cpp
+++ b/src/Draw.cpp
@@ -56,7 +56,7 @@
if (!SystemTask())
return FALSE;
- //Framerate limiter
+ // Framerate limiter
static uint32_t timePrev;
const uint32_t timeNow = SDL_GetTicks();
@@ -81,15 +81,15 @@
{
(void)lColourDepth;
- //Initialize rendering
+ // Initialize rendering
SDL_InitSubSystem(SDL_INIT_VIDEO);
- //Create renderer
+ // Create renderer
gRenderer = SDL_CreateRenderer(gWindow, -1, SDL_RENDERER_ACCELERATED);
if (gRenderer != NULL)
{
- //Print the name of the renderer SDL2 is using
+ // Print the name of the renderer SDL2 is using
SDL_RendererInfo info;
SDL_GetRendererInfo(gRenderer, &info);
printf("Renderer: %s\n", info.name);
@@ -120,10 +120,10 @@
void EndDirectDraw()
{
- //Quit sub-system
+ // Quit sub-system
SDL_QuitSubSystem(SDL_INIT_VIDEO);
- //Release all surfaces
+ // Release all surfaces
for (int i = 0; i < SURFACE_ID_MAX; i++)
ReleaseSurface(i);
}
@@ -143,7 +143,7 @@
void ReleaseSurface(int s)
{
- //Release the surface we want to release
+ // Release the surface we want to release
if (surf[s].in_use)
{
SDL_DestroyTexture(surf[s].texture);
@@ -172,7 +172,7 @@
}
else
{
- //Create surface
+ // Create surface
surf[surf_no].surface = SDL_CreateRGBSurfaceWithFormat(0, bxsize * magnification, bysize * magnification, 0, SDL_PIXELFORMAT_RGB24);
SDL_SetSurfaceBlendMode(surf[surf_no].surface, SDL_BLENDMODE_NONE);
@@ -320,7 +320,7 @@
char path[PATH_LENGTH];
SDL_RWops *fp;
- //Attempt to load PBM
+ // Attempt to load PBM
sprintf(path, "%s/%s.pbm", gDataPath, name);
fp = SDL_RWFromFile(path, "rb");
if (fp)
@@ -338,7 +338,7 @@
}
}
- //Attempt to load BMP
+ // Attempt to load BMP
sprintf(path, "%s/%s.bmp", gDataPath, name);
fp = SDL_RWFromFile(path, "rb");
if (fp)
@@ -412,22 +412,22 @@
void BackupSurface(Surface_Ids surf_no, RECT *rect)
{
- //Get renderer size
+ // Get renderer size
int w, h;
SDL_GetRendererOutputSize(gRenderer, &w, &h);
- //Get texture of what's currently rendered on screen
+ // Get texture of what's currently rendered on screen
SDL_Surface *surface = SDL_CreateRGBSurfaceWithFormat(0, w, h, 0, SDL_PIXELFORMAT_RGB24);
SDL_SetSurfaceBlendMode(surface, SDL_BLENDMODE_NONE);
SDL_RenderReadPixels(gRenderer, NULL, SDL_PIXELFORMAT_RGB24, surface->pixels, surface->pitch);
- //Get rects
+ // Get rects
SDL_Rect frameRect = RectToSDLRectScaled(rect);
SDL_BlitSurface(surface, &frameRect, surf[surf_no].surface, &frameRect);
surf[surf_no].needs_updating = true;
- //Free surface
+ // Free surface
SDL_FreeSurface(surface);
}
@@ -439,33 +439,32 @@
surf[surf_no].needs_updating = false;
}
- //Get SDL_Rects
+ // Get SDL_Rects
SDL_Rect clipRect = RectToSDLRectScaled(rcView);
-
SDL_Rect frameRect = RectToSDLRectScaled(rect);
- //Get dest rect
+ // Get dest rect
SDL_Rect destRect = {x * magnification, y * magnification, frameRect.w, frameRect.h};
- //Set cliprect
+ // Set cliprect
SDL_RenderSetClipRect(gRenderer, &clipRect);
SDL_SetTextureBlendMode(surf[surf_no].texture, transparent ? SDL_BLENDMODE_BLEND : SDL_BLENDMODE_NONE);
- //Draw to screen
+ // Draw to screen
if (SDL_RenderCopy(gRenderer, surf[surf_no].texture, &frameRect, &destRect) < 0)
printf("Failed to draw texture %d\nSDL Error: %s\n", surf_no, SDL_GetError());
- //Undo cliprect
+ // Undo cliprect
SDL_RenderSetClipRect(gRenderer, NULL);
}
-void PutBitmap3(RECT *rcView, int x, int y, RECT *rect, Surface_Ids surf_no) //Transparency
+void PutBitmap3(RECT *rcView, int x, int y, RECT *rect, Surface_Ids surf_no) // Transparency
{
DrawBitmap(rcView, x, y, rect, surf_no, true);
}
-void PutBitmap4(RECT *rcView, int x, int y, RECT *rect, Surface_Ids surf_no) //No Transparency
+void PutBitmap4(RECT *rcView, int x, int y, RECT *rect, Surface_Ids surf_no) // No Transparency
{
DrawBitmap(rcView, x, y, rect, surf_no, false);
}
@@ -472,7 +471,7 @@
void Surface2Surface(int x, int y, RECT *rect, int to, int from)
{
- //Get rects
+ // Get rects
SDL_Rect rcSet = {x * magnification, y * magnification, (rect->right - rect->left) * magnification, (rect->bottom - rect->top) * magnification};
SDL_Rect frameRect = RectToSDLRectScaled(rect);
@@ -488,10 +487,10 @@
void CortBox(RECT *rect, uint32_t col)
{
- //Get rect
+ // Get rect
SDL_Rect destRect = RectToSDLRectScaled(rect);
- //Set colour and draw
+ // Set colour and draw
const unsigned char col_red = col & 0x0000FF;
const unsigned char col_green = (col & 0x00FF00) >> 8;
const unsigned char col_blue = (col & 0xFF0000) >> 16;
@@ -501,10 +500,10 @@
void CortBox2(RECT *rect, uint32_t col, Surface_Ids surf_no)
{
- //Get rect
+ // Get rect
SDL_Rect destRect = RectToSDLRectScaled(rect);
- //Set colour and draw
+ // Set colour and draw
const unsigned char col_red = col & 0x0000FF;
const unsigned char col_green = (col & 0x00FF00) >> 8;
const unsigned char col_blue = (col & 0xFF0000) >> 16;
@@ -558,7 +557,7 @@
void InitTextObject(const char *font_name)
{
- //Get font size
+ // Get font size
unsigned int fontWidth, fontHeight;
// The original did this, but Windows would downscale it to 5/10 anyway.
@@ -568,11 +567,14 @@
fontHeight = 12;
}
else
- {*/
+ {
fontWidth = 5 * magnification;
fontHeight = 10 * magnification;
-// }
+ }*/
+ fontWidth = 5 * magnification;
+ fontHeight = 10 * magnification;
+
size_t data_size;
#ifdef WINDOWS
// Actually use the font Config.dat specifies
@@ -632,7 +634,7 @@
void EndTextObject()
{
- //Destroy font
+ // Destroy font
UnloadFont(gFont);
gFont = NULL;
}
--- a/src/Ending.cpp
+++ b/src/Ending.cpp
@@ -23,21 +23,21 @@
STRIP Strip[MAX_STRIP];
ILLUSTRATION Illust;
-//Update casts
+// Update casts
void ActionStripper()
{
for (int s = 0; s < MAX_STRIP; s++)
{
- //Move up
+ // Move up
if (Strip[s].flag & 0x80 && Credit.mode)
Strip[s].y -= 0x100;
- //Get removed when off-screen
+ // Get removed when off-screen
if (Strip[s].y <= -0x2000)
Strip[s].flag = 0;
}
}
-//Draw casts
+// Draw casts
void PutStripper()
{
for (int s = 0; s < MAX_STRIP; s++)
@@ -44,11 +44,11 @@
{
if (Strip[s].flag & 0x80)
{
- //Draw text
+ // Draw text
RECT rc = {0, 16 * s, 320, 16 * s + 16};
PutBitmap3(&grcFull, (Strip[s].x + ((WINDOW_WIDTH - 320) << 8)) / 0x200, Strip[s].y / 0x200, &rc, SURFACE_ID_CREDIT_CAST);
- //Draw character
+ // Draw character
rc.left = 24 * (Strip[s].cast % 13);
rc.right = rc.left + 24;
rc.top = 24 * (Strip[s].cast / 13);
@@ -58,7 +58,7 @@
}
}
-//Create a cast object
+// Create a cast object
void SetStripper(int x, int y, const char *text, int cast)
{
for (int s = 0; s < MAX_STRIP; s++)
@@ -65,7 +65,7 @@
{
if (!(Strip[s].flag & 0x80))
{
- //Initialize cast property
+ // Initialize cast property
Strip[s].flag = 0x80;
Strip[s].x = x;
Strip[s].y = y;
@@ -72,7 +72,7 @@
Strip[s].cast = cast;
strcpy(Strip[s].str, text);
- //Draw text
+ // Draw text
RECT rc = {0, 16 * s, 320, 16 * s + 16};
CortBox2(&rc, 0, SURFACE_ID_CREDIT_CAST);
PutText2(0, 16 * s, text, RGB(0xFF, 0xFF, 0xFE), SURFACE_ID_CREDIT_CAST);
@@ -81,7 +81,7 @@
}
}
-//Regenerate cast text
+// Regenerate cast text
void RestoreStripper()
{
for (int s = 0; s < MAX_STRIP; s++)
@@ -95,22 +95,22 @@
}
}
-//Handle the illustration
+// Handle the illustration
void ActionIllust()
{
switch (Illust.act_no)
{
- case 0: //Off-screen to the left
+ case 0: // Off-screen to the left
Illust.x = -0x14000;
break;
- case 1: //Move in from the left
+ case 1: // Move in from the left
Illust.x += 0x5000;
if (Illust.x > 0)
Illust.x = 0;
break;
- case 2: //Move out from the right
+ case 2: // Move out from the right
Illust.x -= 0x5000;
if (Illust.x < -0x14000)
Illust.x = -0x14000;
@@ -118,7 +118,7 @@
}
}
-//Draw illustration
+// Draw illustration
void PutIllust()
{
RECT rcIllust = {0, 0, 160, 240};
@@ -126,7 +126,7 @@
PutBitmap3(&rcClip, (Illust.x + ((WINDOW_WIDTH - 320) << 8)) / 0x200, (WINDOW_HEIGHT - 240) / 2, &rcIllust, SURFACE_ID_CREDITS_IMAGE);
}
-//Load illustration
+// Load illustration
void ReloadIllust(int a)
{
char name[16];
@@ -134,10 +134,10 @@
ReloadBitmap_Resource(name, SURFACE_ID_CREDITS_IMAGE);
}
-//Initialize and release credits
+// Initialize and release credits
void InitCreditScript()
{
- //Clear script state and casts
+ // Clear script state and casts
memset(&Credit, 0, sizeof(CREDIT));
memset(Strip, 0, sizeof(Strip));
}
@@ -146,16 +146,16 @@
{
if (Credit.pData)
{
- //Free script data
+ // Free script data
free(Credit.pData);
Credit.pData = NULL;
}
}
-//Start playing credits
+// Start playing credits
bool StartCreditScript()
{
- //Clear previously existing credits data
+ // Clear previously existing credits data
if (Credit.pData)
{
free(Credit.pData);
@@ -162,7 +162,7 @@
Credit.pData = NULL;
}
- //Open file
+ // Open file
char path[PATH_LENGTH];
sprintf(path, "%s/%s", gDataPath, "Credit.tsc");
@@ -170,7 +170,7 @@
if (Credit.size == -1)
return false;
- //Allcoate buffer data
+ // Allocate buffer data
Credit.pData = (char*)malloc(Credit.size);
if (Credit.pData == NULL)
return false;
@@ -182,7 +182,7 @@
return false;
}
- //Read data
+ // Read data
fread(Credit.pData, 1, Credit.size, fp);
EncryptionBinaryData2((uint8_t*)Credit.pData, Credit.size);
@@ -191,7 +191,7 @@
fclose(fp);
#endif
- //Reset credits
+ // Reset credits
Credit.offset = 0;
Credit.wait = 0;
Credit.mode = 1;
@@ -198,7 +198,7 @@
Illust.x = -0x14000;
Illust.act_no = 0;
- //Modify cliprect
+ // Modify cliprect
grcGame.left = WINDOW_WIDTH / 2;
// These three are non-vanilla: for wide/tallscreen support
grcGame.right = ((WINDOW_WIDTH - 320) / 2) + 320;
@@ -205,16 +205,16 @@
grcGame.top = (WINDOW_HEIGHT - 240) / 2;
grcGame.bottom = ((WINDOW_HEIGHT - 240) / 2) + 240;
- //Reload casts
+ // Reload casts
if (!ReloadBitmap_File("casts", SURFACE_ID_CASTS))
return false;
- //Clear casts
+ // Clear casts
memset(Strip, 0, sizeof(Strip));
return true;
}
-//Get number from text (4 digit)
+// Get number from text (4 digit)
int GetScriptNumber(const char *text)
{
return 1000 * text[0] - 48000 +
@@ -223,19 +223,19 @@
text[3] - 48;
}
-//Parse credits
+// Parse credits
void ActionCredit_Read()
{
while (Credit.offset < Credit.size)
{
- //Get character
+ // Get character
uint8_t character = Credit.pData[Credit.offset];
int a, b, len;
switch (character)
{
- case '[': //Create cast
- //Get the range for the cast text
+ case '[': // Create cast
+ // Get the range for the cast text
a = ++Credit.offset;
while (Credit.pData[a] != ']')
@@ -248,35 +248,35 @@
len = a - Credit.offset;
- //Copy the text to the cast text
+ // Copy the text to the cast text
char text[40];
memcpy(text, &Credit.pData[Credit.offset], a - Credit.offset);
text[len] = 0;
- //Get cast id
+ // Get cast id
Credit.offset = a + 1;
len = GetScriptNumber(&Credit.pData[a + 1]);
- //Create cast object
+ // Create cast object
SetStripper(Credit.start_x, (WINDOW_HEIGHT << 9) + 0x1000, text, len);
- //Change offset
+ // Change offset
Credit.offset += 4;
return;
- case 'j': //Jump to label
- //Get number
+ case 'j': // Jump to label
+ // Get number
b = GetScriptNumber(&Credit.pData[++Credit.offset]);
- //Change offset
+ // Change offset
Credit.offset += 4;
- //Jump to specific label
+ // Jump to specific label
while (Credit.offset < Credit.size)
{
if (Credit.pData[Credit.offset] == 'l')
{
- //what is this
+ // What is this
a = GetScriptNumber(&Credit.pData[++Credit.offset]);
Credit.offset += 4;
if (b == a)
@@ -294,29 +294,29 @@
return;
- case '~': //Start fading out music
+ case '~': // Start fading out music
++Credit.offset;
SetOrganyaFadeout();
return;
- case 'f': //Flag jump
- //Read numbers XXXX:YYYY
+ case 'f': // Flag jump
+ // Read numbers XXXX:YYYY
a = GetScriptNumber(&Credit.pData[++Credit.offset]);
Credit.offset += 5;
b = GetScriptNumber(&Credit.pData[Credit.offset]);
Credit.offset += 4;
- //If flag is set
+ // If flag is set
if (GetNPCFlag(a))
{
- //Jump to label
- while ( Credit.offset < Credit.size )
+ // Jump to label
+ while (Credit.offset < Credit.size)
{
if (Credit.pData[Credit.offset] == 'l')
{
a = GetScriptNumber(&Credit.pData[++Credit.offset]);
Credit.offset += 4;
- if ( b == a )
+ if (b == a)
return;
}
else if (IsShiftJIS(Credit.pData[Credit.offset]))
@@ -331,22 +331,22 @@
}
return;
- case '+': //Change casts x-position
+ case '+': // Change casts x-position
Credit.start_x = GetScriptNumber(&Credit.pData[++Credit.offset]) << 9;
Credit.offset += 4;
return;
- case '-': //Wait for X amount of frames
+ case '-': // Wait for X amount of frames
Credit.wait = GetScriptNumber(&Credit.pData[++Credit.offset]);
Credit.offset += 4;
Credit.mode = 2;
return;
- case '/': //Stop credits
+ case '/': // Stop credits
Credit.mode = 0;
return;
- case '!': //Change music
+ case '!': // Change music
a = GetScriptNumber(&Credit.pData[++Credit.offset]);
Credit.offset += 4;
ChangeMusic(a);
@@ -353,17 +353,17 @@
return;
}
- //Progress through file
+ // Progress through file
++Credit.offset;
}
}
-//Update credits
+// Update credits
void ActionCredit()
{
if (Credit.offset < Credit.size)
{
- //Update script, or if waiting, decrement the wait value
+ // Update script, or if waiting, decrement the wait value
if (Credit.mode == 1)
{
ActionCredit_Read();
@@ -375,7 +375,7 @@
}
}
-//Change illustration
+// Change illustration
void SetCreditIllust(int a)
{
ReloadIllust(a);
@@ -382,21 +382,21 @@
Illust.act_no = 1;
}
-//Slide illustration off-screen
+// Slide illustration off-screen
void CutCreditIllust()
{
Illust.act_no = 2;
}
-//Scene of the island falling
+// Scene of the island falling
int Scene_DownIsland(int mode)
{
- //Setup background
+ // Setup background
RECT rc_frame = {(WINDOW_WIDTH - 160) / 2, (WINDOW_HEIGHT - 80) / 2, (WINDOW_WIDTH + 160) / 2, (WINDOW_HEIGHT + 80) / 2};
RECT rc_sky = {0, 0, 160, 80};
RECT rc_ground = {160, 48, 320, 80};
- //Setup island
+ // Setup island
RECT rc_sprite = {160, 0, 200, 24};
ISLAND_SPRITE sprite;
@@ -405,10 +405,10 @@
for (int wait = 0; wait < 900; wait++)
{
- //Get pressed keys
+ // Get pressed keys
GetTrg();
- //Escape menu
+ // Escape menu
if (gKey & 0x8000)
{
int escRet = Call_Escape();
@@ -421,7 +421,7 @@
switch (mode)
{
case 0:
- //Move down
+ // Move down
sprite.y += 0x33;
break;
@@ -432,31 +432,31 @@
{
if (wait >= 600)
{
- //End scene
+ // End scene
if (wait == 750)
wait = 900;
}
else
{
- //Move down slow
+ // Move down slow
sprite.y += 0xC;
}
}
else
{
- //Move down slower
+ // Move down slower
sprite.y += 0x19;
}
}
else
{
- //Move down at normal speed
+ // Move down at normal speed
sprite.y += 0x33;
}
break;
}
- //Draw scene
+ // Draw scene
CortBox(&grcFull, 0);
PutBitmap3(&rc_frame, 80 + (WINDOW_WIDTH - 320) / 2, 80 + (WINDOW_HEIGHT - 240) / 2, &rc_sky, SURFACE_ID_LEVEL_SPRITESET_1);
PutBitmap3(&rc_frame, sprite.x / 0x200 - 20 + (WINDOW_WIDTH - 320) / 2, sprite.y / 512 - 12 + (WINDOW_HEIGHT - 240) / 2, &rc_sprite, SURFACE_ID_LEVEL_SPRITESET_1);
@@ -463,7 +463,7 @@
PutBitmap3(&rc_frame, 80 + (WINDOW_WIDTH - 320) / 2, 128 + (WINDOW_HEIGHT - 240) / 2, &rc_ground, SURFACE_ID_LEVEL_SPRITESET_1);
PutTimeCounter(16, 8);
- //Draw window
+ // Draw window
PutFramePerSecound();
if (!Flip_SystemTask())
return 0;
--- a/src/Ending.h
+++ b/src/Ending.h
@@ -33,7 +33,7 @@
int y;
};
-#define MAX_STRIP (WINDOW_HEIGHT / 16) + 1
+#define MAX_STRIP ((WINDOW_HEIGHT / 16) + 1)
void ActionStripper();
void PutStripper();
--- a/src/Escape.cpp
+++ b/src/Escape.cpp
@@ -13,26 +13,26 @@
while (1)
{
- //Get pressed keys
+ // Get pressed keys
GetTrg();
- if (gKeyTrg & KEY_ESCAPE) //Escape is pressed, quit game
+ if (gKeyTrg & KEY_ESCAPE) // Escape is pressed, quit game
{
gKeyTrg = 0;
return 0;
}
- if (gKeyTrg & KEY_F1) //F1 is pressed, continue
+ if (gKeyTrg & KEY_F1) // F1 is pressed, continue
{
gKeyTrg = 0;
return 1;
}
- if (gKeyTrg & KEY_F2) //F2 is pressed, reset
+ if (gKeyTrg & KEY_F2) // F2 is pressed, reset
{
gKeyTrg = 0;
return 2;
}
- //Draw screen
+ // Draw screen
CortBox(&grcFull, 0x000000);
PutBitmap3(&grcFull, (WINDOW_WIDTH - 208) / 2, (WINDOW_HEIGHT - 16) / 2, &rc, SURFACE_ID_TEXT_BOX);
PutFramePerSecound();
@@ -39,7 +39,7 @@
if (!Flip_SystemTask())
{
- //Quit if window is closed
+ // Quit if window is closed
gKeyTrg = 0;
return 0;
}
--- a/src/Map.cpp
+++ b/src/Map.cpp
@@ -81,7 +81,7 @@
BOOL LoadAttributeData(const char *path_atrb)
{
//Open file
- char path[260];
+ char path[PATH_LENGTH];
sprintf(path, "%s/%s", gDataPath, path_atrb);
FILE *fp = fopen(path, "rb");
--- a/src/NpChar.cpp
+++ b/src/NpChar.cpp
@@ -53,7 +53,7 @@
npc->view.bottom = gNpcTable[code].view.bottom << 9;
}
-bool LoadEvent(const char *path_event)
+BOOL LoadEvent(const char *path_event)
{
char path[PATH_LENGTH];
sprintf(path, "%s/%s", gDataPath, path_event);
@@ -60,7 +60,7 @@
FILE *fp = fopen(path, "rb");
if (fp == NULL)
- return false;
+ return FALSE;
//Read "PXE" check
char code[4];
@@ -71,7 +71,7 @@
// The original game forgot to close the file here
fclose(fp);
#endif
- return false;
+ return FALSE;
}
//Get amount of NPCs
@@ -128,7 +128,7 @@
}
fclose(fp);
- return true;
+ return TRUE;
}
void SetNpChar(int code_char, int x, int y, int xm, int ym, int dir, NPCHAR *npc, int start_index)
@@ -235,7 +235,7 @@
}
}
-bool SetBulletObject(int x, int y, int val)
+BOOL SetBulletObject(int x, int y, int val)
{
int tamakazu_ari[10];
@@ -254,7 +254,7 @@
}
if (!t)
- return false;
+ return FALSE;
n = Random(1, 10 * t);
int bullet_no = tamakazu_ari[n % t];
@@ -272,14 +272,14 @@
gNPC[n].bits = gNpcTable[gNPC[n].code_char].bits;
gNPC[n].exp = val;
SetUniqueParameter(&gNPC[n]);
- return true;
+ return TRUE;
}
}
- return false;
+ return FALSE;
}
-bool SetLifeObject(int x, int y, int val)
+BOOL SetLifeObject(int x, int y, int val)
{
for (int n = 0x100; n < NPC_MAX; n++)
{
@@ -294,11 +294,11 @@
gNPC[n].bits = gNpcTable[gNPC[n].code_char].bits;
gNPC[n].exp = val;
SetUniqueParameter(&gNPC[n]);
- return true;
+ return TRUE;
}
}
- return false;
+ return FALSE;
}
void VanishNpChar(NPCHAR *npc)
--- a/src/NpChar.h
+++ b/src/NpChar.h
@@ -83,13 +83,13 @@
extern int gSuperYpos;
void InitNpChar();
-bool LoadEvent(const char *path_event);
+BOOL LoadEvent(const char *path_event);
void SetNpChar(int code_char, int x, int y, int xm, int ym, int dir, NPCHAR *npc, int start_index);
void SetDestroyNpChar(int x, int y, int w, int num);
void SetDestroyNpCharUp(int x, int y, int w, int num);
void SetExpObjects(int x, int y, int exp);
-bool SetBulletObject(int x, int y, int val);
-bool SetLifeObject(int x, int y, int val);
+BOOL SetBulletObject(int x, int y, int val);
+BOOL SetLifeObject(int x, int y, int val);
void VanishNpChar(NPCHAR *npc);
void PutNpChar(int fx, int fy);
void ActNpChar();
--- a/src/Stage.cpp
+++ b/src/Stage.cpp
@@ -132,7 +132,7 @@
BOOL TransferStage(int no, int w, int x, int y)
{
//Move character
- SetMyCharPosition(x << 13, y << 13);
+ SetMyCharPosition(x * 0x10 * 0x200, y * 0x10 * 0x200);
BOOL bError = FALSE;
@@ -166,7 +166,7 @@
bError = TRUE;
//Load background
- strcpy(path, gTMT[no].back);
+ sprintf(path, "%s", gTMT[no].back);
if (!InitBack(path, gTMT[no].bkType))
bError = TRUE;
@@ -183,28 +183,21 @@
bError = TRUE;
if (bError)
- {
- printf("Failed to load stage %d\n", no);
return FALSE;
- }
- else
- {
- //Load map name
- ReadyMapName(gTMT[no].name);
- StartTextScript(w);
- SetFrameMyChar();
- ClearBullet();
- InitCaret();
- ClearValueView();
- ResetQuake();
- InitBossChar(gTMT[no].boss_no);
- ResetFlash();
- gStageNo = no;
- return TRUE;
- }
+ //Load map name
+ ReadyMapName(gTMT[no].name);
- return FALSE;
+ StartTextScript(w);
+ SetFrameMyChar();
+ ClearBullet();
+ InitCaret();
+ ClearValueView();
+ ResetQuake();
+ InitBossChar(gTMT[no].boss_no);
+ ResetFlash();
+ gStageNo = no;
+ return TRUE;
}
//Music
@@ -264,22 +257,22 @@
void ChangeMusic(int no)
{
- if (!no || no != gMusicNo)
- {
- //Stop and keep track of old song
- gOldPos = GetOrganyaPosition();
- gOldNo = gMusicNo;
- StopOrganyaMusic();
+ if (no && no == gMusicNo)
+ return;
- //Load .org
- LoadOrganya(gMusicTable[no]);
+ //Stop and keep track of old song
+ gOldPos = GetOrganyaPosition();
+ gOldNo = gMusicNo;
+ StopOrganyaMusic();
- //Reset position, volume, and then play the song
- ChangeOrganyaVolume(100);
- SetOrganyaPosition(0);
- PlayOrganyaMusic();
- gMusicNo = no;
- }
+ //Load .org
+ LoadOrganya(gMusicTable[no]);
+
+ //Reset position, volume, and then play the song
+ ChangeOrganyaVolume(100);
+ SetOrganyaPosition(0);
+ PlayOrganyaMusic();
+ gMusicNo = no;
}
void ReCallMusic()
--- a/src/TextScr.cpp
+++ b/src/TextScr.cpp
@@ -112,7 +112,7 @@
}
//Load generic .tsc
-bool LoadTextScript2(const char *name)
+BOOL LoadTextScript2(const char *name)
{
//Get path
char path[260];
@@ -120,12 +120,12 @@
gTS.size = GetFileSizeLong(path);
if (gTS.size == -1)
- return false;
+ return FALSE;
//Open file
FILE *fp = fopen(path, "rb");
if (fp == NULL)
- return false;
+ return FALSE;
//Read data
fread(gTS.data, 1, gTS.size, fp);
@@ -137,11 +137,11 @@
//Decrypt data
EncryptionBinaryData2((uint8_t*)gTS.data, gTS.size);
- return true;
+ return TRUE;
}
//Load stage .tsc
-bool LoadTextScript_Stage(const char *name)
+BOOL LoadTextScript_Stage(const char *name)
{
//Open Head.tsc
char path[PATH_LENGTH];
@@ -149,11 +149,11 @@
long head_size = GetFileSizeLong(path);
if (head_size == -1)
- return false;
+ return FALSE;
FILE *fp = fopen(path, "rb");
if (fp == NULL)
- return false;
+ return FALSE;
//Read Head.tsc
fread(gTS.data, 1, head_size, fp);
@@ -166,11 +166,11 @@
long body_size = GetFileSizeLong(path);
if (body_size == -1)
- return false;
+ return FALSE;
fp = fopen(path, "rb");
if (fp == NULL)
- return false;
+ return FALSE;
//Read stage's tsc
fread(&gTS.data[head_size], 1, body_size, fp);
@@ -181,7 +181,7 @@
//Set parameters
gTS.size = head_size + body_size;
strcpy(gTS.path, name);
- return true;
+ return TRUE;
}
//Get current path
--- a/src/TextScr.h
+++ b/src/TextScr.h
@@ -60,8 +60,8 @@
BOOL InitTextScript2();
void EndTextScript();
void EncryptionBinaryData2(uint8_t *pData, int size);
-bool LoadTextScript2(const char *name);
-bool LoadTextScript_Stage(const char *name);
+BOOL LoadTextScript2(const char *name);
+BOOL LoadTextScript_Stage(const char *name);
void GetTextScriptPath(char *path);
BOOL StartTextScript(int no);
void StopTextScript();