help
This commit is contained in:
commit
c387c31d04
8 changed files with 473 additions and 398 deletions
|
@ -14,12 +14,15 @@ This project currently depends on SDL2 and Freetype2.
|
||||||
|
|
||||||
## Building
|
## Building
|
||||||
|
|
||||||
Just run 'make' in the base directory, preferably with some of the following optional settings:
|
The project is currently built 'the Linux way':
|
||||||
|
|
||||||
|
Just run 'make' in the base directory, preferably with some of the following settings:
|
||||||
|
|
||||||
* RELEASE=1 to compile a release build (optimised, stripped, etc.)
|
* RELEASE=1 to compile a release build (optimised, stripped, etc.)
|
||||||
* STATIC=1 to produce a statically-linked executable (good for Windows builds)
|
* STATIC=1 to produce a statically-linked executable (good for Windows builds)
|
||||||
* JAPANESE=1 to enable the Japanese-language build (instead of the unofficial Aeon Genesis English translation)
|
* JAPANESE=1 to enable the Japanese-language build (instead of the unofficial Aeon Genesis English translation)
|
||||||
* FIX_BUGS=1 to fix certain bugs (see [src/Bug Fixes.txt](https://github.com/cuckydev/Cave-Story-Engine-2/blob/master/src/Bug%20Fixes.txt))
|
* FIX_BUGS=1 to fix certain bugs (see [src/Bug Fixes.txt](https://github.com/cuckydev/Cave-Story-Engine-2/blob/master/src/Bug%20Fixes.txt))
|
||||||
|
* WINDOWS=1 to enable Windows-only features like a unique file/taskbar icon, and system font loading (needed for the font setting in Config.dat to do anything)
|
||||||
|
|
||||||
## Running
|
## Running
|
||||||
|
|
||||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 400 B |
Binary file not shown.
Before Width: | Height: | Size: 338 B |
|
@ -1,2 +1,5 @@
|
||||||
Main.cpp : void SystemTask()
|
Main.cpp : void SystemTask()
|
||||||
Pixel intended for the second alternate up key to be the plus key, Japanese keyboards have the plus key where the semi-colon key is, causing errors on other keyboard layouts)
|
Pixel intended for the second alternate up key to be the plus key, Japanese keyboards have the plus key where the semi-colon key is, causing errors on other keyboard layouts)
|
||||||
|
|
||||||
|
SelStage.cpp : int StageSelectLoop(int *p_event)
|
||||||
|
The screencap that serves as the menu's background was being drawn with transparency enabled. This can cause moving sprites (like the text) to leave a trail.
|
||||||
|
|
51
src/Draw.cpp
51
src/Draw.cpp
|
@ -234,21 +234,52 @@ static bool LoadBitmap(SDL_RWops *fp, int surf_no, bool create_surface)
|
||||||
{
|
{
|
||||||
if (create_surface == false || MakeSurface_Generic(surface->w, surface->h, surf_no))
|
if (create_surface == false || MakeSurface_Generic(surface->w, surface->h, surf_no))
|
||||||
{
|
{
|
||||||
SDL_Surface *converted_surface = SDL_ConvertSurface(surface, surf[surf_no].surface->format, 0);
|
if (gWindowScale == 1)
|
||||||
|
|
||||||
if (converted_surface == NULL)
|
|
||||||
{
|
{
|
||||||
printf("Couldn't convert bitmap to surface format (surface id %d)\nSDL Error: %s\n", surf_no, SDL_GetError());
|
SDL_Rect dst_rect = {0, 0, surface->w, surface->h};
|
||||||
}
|
SDL_BlitSurface(surface, NULL, surf[surf_no].surface, &dst_rect);
|
||||||
else
|
SDL_FreeSurface(surface);
|
||||||
{
|
|
||||||
SDL_Rect dst_rect = {0, 0, converted_surface->w * magnification, converted_surface->h * magnification};
|
|
||||||
SDL_BlitScaled(converted_surface, NULL, surf[surf_no].surface, &dst_rect);
|
|
||||||
SDL_FreeSurface(converted_surface);
|
|
||||||
surf[surf_no].needs_updating = true;
|
surf[surf_no].needs_updating = true;
|
||||||
printf(" ^ Successfully loaded\n");
|
printf(" ^ Successfully loaded\n");
|
||||||
success = true;
|
success = true;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
SDL_Surface *converted_surface = SDL_ConvertSurface(surface, surf[surf_no].surface->format, 0);
|
||||||
|
|
||||||
|
if (converted_surface == NULL)
|
||||||
|
{
|
||||||
|
printf("Couldn't convert bitmap to surface format (surface id %d)\nSDL Error: %s\n", surf_no, SDL_GetError());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Upscale the bitmap to the game's native resolution (SDL_BlitScaled is buggy, so we have to do it on our own)
|
||||||
|
const unsigned char (*src_pixels)[converted_surface->pitch] = (unsigned char(*)[converted_surface->pitch])converted_surface->pixels;
|
||||||
|
unsigned char (*dst_pixels)[surf[surf_no].surface->pitch] = (unsigned char(*)[surf[surf_no].surface->pitch])surf[surf_no].surface->pixels;
|
||||||
|
|
||||||
|
for (int h = 0; h < converted_surface->h; ++h)
|
||||||
|
{
|
||||||
|
const unsigned long *src_row = (unsigned long*)src_pixels[h];
|
||||||
|
unsigned long *dst_row = (unsigned long*)dst_pixels[h * gWindowScale];
|
||||||
|
|
||||||
|
for (int w = 0; w < converted_surface->w; ++w)
|
||||||
|
{
|
||||||
|
const unsigned long src_pixel = *src_row++;
|
||||||
|
|
||||||
|
for (int i = 0; i < gWindowScale; ++i)
|
||||||
|
*dst_row++ = src_pixel;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 1; i < gWindowScale; ++i)
|
||||||
|
memcpy(dst_pixels[(h * gWindowScale) + i], dst_pixels[h * gWindowScale], surf[surf_no].surface->w * sizeof(unsigned long));
|
||||||
|
}
|
||||||
|
|
||||||
|
SDL_FreeSurface(converted_surface);
|
||||||
|
surf[surf_no].needs_updating = true;
|
||||||
|
printf(" ^ Successfully loaded\n");
|
||||||
|
success = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SDL_FreeSurface(surface);
|
SDL_FreeSurface(surface);
|
||||||
|
|
|
@ -165,7 +165,12 @@ int StageSelectLoop(int *p_event)
|
||||||
if (tscRet == 2)
|
if (tscRet == 2)
|
||||||
return 2;
|
return 2;
|
||||||
|
|
||||||
|
#ifdef FIX_BUGS
|
||||||
|
PutBitmap4(&rcView, 0, 0, &rcView, 10);
|
||||||
|
#else
|
||||||
|
// The original accidentally drew the screencap with transparency enabled
|
||||||
PutBitmap3(&rcView, 0, 0, &rcView, 10);
|
PutBitmap3(&rcView, 0, 0, &rcView, 10);
|
||||||
|
#endif
|
||||||
PutStageSelectObject();
|
PutStageSelectObject();
|
||||||
PutTextScript();
|
PutTextScript();
|
||||||
|
|
||||||
|
|
803
src/TextScr.cpp
803
src/TextScr.cpp
File diff suppressed because it is too large
Load diff
|
@ -54,13 +54,13 @@ struct TEXT_SCRIPT
|
||||||
uint8_t wait_beam;
|
uint8_t wait_beam;
|
||||||
};
|
};
|
||||||
|
|
||||||
bool InitTextScript2();
|
BOOL InitTextScript2();
|
||||||
void EndTextScript();
|
void EndTextScript();
|
||||||
void EncryptionBinaryData2(uint8_t *pData, int size);
|
void EncryptionBinaryData2(uint8_t *pData, int size);
|
||||||
bool LoadTextScript2(const char *name);
|
bool LoadTextScript2(const char *name);
|
||||||
bool LoadTextScript_Stage(char *name);
|
bool LoadTextScript_Stage(char *name);
|
||||||
void GetTextScriptPath(char *path);
|
void GetTextScriptPath(char *path);
|
||||||
bool StartTextScript(int no);
|
BOOL StartTextScript(int no);
|
||||||
void StopTextScript();
|
void StopTextScript();
|
||||||
void PutTextScript();
|
void PutTextScript();
|
||||||
int TextScriptProc();
|
int TextScriptProc();
|
Loading…
Add table
Reference in a new issue