Merge pull request #23 from Clownacy/master

Merge Clownacy/master into master
This commit is contained in:
Gabriel Ravier 2019-06-12 19:44:23 +02:00 committed by GitHub
commit f9d62f38ef
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
52 changed files with 297 additions and 187 deletions

8
.gitignore vendored
View file

@ -16,13 +16,13 @@ msvc2003/devilution/compare.asm
# Exclude build output on Linux (exclude normally produced executable files and out files) # Exclude build output on Linux (exclude normally produced executable files and out files)
build_en/CSE2 build_en/CSE2
build_en/CSE2d build_en/CSE2_debug
build_en/DoConfig build_en/DoConfig
build_en/DoConfigd build_en/DoConfig_debug
build_jp/CSE2 build_jp/CSE2
build_jp/CSE2d build_jp/CSE2_debug
build_jp/DoConfig build_jp/DoConfig
build_jp/DoConfigd build_jp/DoConfig_debug
build_en/*.out build_en/*.out
build_jp/*.out build_jp/*.out

View file

@ -263,10 +263,7 @@ elseif(NOT WIN32)
endif() endif()
# Magic to convert resources to header files # Magic to convert resources to header files
add_executable(bin2h "src/misc/bin2h.c") add_subdirectory("bin2h")
if(MSVC)
target_compile_definitions(bin2h PRIVATE _CRT_SECURE_NO_WARNINGS) # Shut up those stupid warnings
endif()
foreach(FILENAME IN LISTS RESOURCES) foreach(FILENAME IN LISTS RESOURCES)
set(IN_DIR "${CMAKE_CURRENT_SOURCE_DIR}/res") set(IN_DIR "${CMAKE_CURRENT_SOURCE_DIR}/res")
set(OUT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src/Resource") set(OUT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src/Resource")
@ -294,10 +291,8 @@ set_target_properties(CSE2 PROPERTIES
CXX_EXTENSIONS OFF CXX_EXTENSIONS OFF
) )
# Name debug builds "CSE2d", to distinguish them # Name debug builds "CSE2_debug", to distinguish them
set_target_properties(CSE2 PROPERTIES set_target_properties(CSE2 PROPERTIES DEBUG_OUTPUT_NAME "CSE2_debug")
DEBUG_OUTPUT_NAME "CSE2d"
)
# Send executable to the build_en/build_jp directory # Send executable to the build_en/build_jp directory
set_target_properties(CSE2 PROPERTIES set_target_properties(CSE2 PROPERTIES
@ -372,6 +367,9 @@ endif()
add_subdirectory("DoConfig") add_subdirectory("DoConfig")
# Name debug builds "DoConfig_debug", to distinguish them
set_target_properties(DoConfig PROPERTIES DEBUG_OUTPUT_NAME "DoConfig_debug")
# Send executable to the build_en/build_jp directory # Send executable to the build_en/build_jp directory
set_target_properties(DoConfig PROPERTIES set_target_properties(DoConfig PROPERTIES
RUNTIME_OUTPUT_DIRECTORY ${BUILD_DIRECTORY} RUNTIME_OUTPUT_DIRECTORY ${BUILD_DIRECTORY}

View file

@ -10,9 +10,6 @@ project(DoConfig LANGUAGES CXX)
add_executable(DoConfig "DoConfig.cpp" "icon.rc") add_executable(DoConfig "DoConfig.cpp" "icon.rc")
# Name debug builds "DoConfigd", to distinguish them
set_target_properties(CSE2 PROPERTIES DEBUG_OUTPUT_NAME "DoConfigd")
# Windows tweak # Windows tweak
if(WIN32) if(WIN32)
set_target_properties(DoConfig PROPERTIES WIN32_EXECUTABLE YES) # Disable the console window set_target_properties(DoConfig PROPERTIES WIN32_EXECUTABLE YES) # Disable the console window

View file

@ -5,14 +5,17 @@
* http://sam.zoy.org/wtfpl/COPYING for more details. */ * http://sam.zoy.org/wtfpl/COPYING for more details. */
#include <cstdlib> #include <cstdlib>
#include <iostream>
#include <fstream> #include <fstream>
#include <cstring>
#include "FL/Fl.H" #include "FL/Fl.H"
#include "FL/Fl_Window.H" #include "FL/Fl_Window.H"
#include "FL/Fl_Radio_Round_Button.H" #include "FL/Fl_Radio_Round_Button.H"
#include "FL/Fl_Choice.H" #include "FL/Fl_Choice.H"
#include "FL/Fl_Check_Button.H" #include "FL/Fl_Check_Button.H"
#include <FL/Fl_Button.H>
#include <FL/Fl_Group.H>
#include <FL/Fl_Menu_Item.H>
#include <FL/Fl_Round_Button.H>
#include <FL/Enumerations.H>
#define MAGIC "DOUKUTSU20041206" #define MAGIC "DOUKUTSU20041206"
#define FONT "Courier New" #define FONT "Courier New"

View file

@ -4,7 +4,7 @@ ifeq ($(RELEASE), 1)
FILENAME_DEF = CSE2 FILENAME_DEF = CSE2
else else
CXXFLAGS = -Og -g3 CXXFLAGS = -Og -g3
FILENAME_DEF = CSE2d FILENAME_DEF = CSE2_debug
endif endif
ifeq ($(JAPANESE), 1) ifeq ($(JAPANESE), 1)
@ -226,10 +226,10 @@ src/Resource/%.h: res/% obj/bin2h
@echo Converting $< @echo Converting $<
@obj/bin2h $< $@ @obj/bin2h $< $@
obj/bin2h: src/misc/bin2h.c obj/bin2h: bin2h/bin2h.c
@mkdir -p $(@D) @mkdir -p $(@D)
@echo Compiling $^ @echo Compiling $^
@$(CC) -O3 -s -std=c90 $^ -o $@ @$(CC) -O3 -s -std=c90 -Wall -Wextra -pedantic $^ -o $@
include $(wildcard $(DEPENDENCIES)) include $(wildcard $(DEPENDENCIES))

31
bin2h/CMakeLists.txt Normal file
View file

@ -0,0 +1,31 @@
cmake_minimum_required(VERSION 3.7.2)
if((${CMAKE_VERSION} VERSION_EQUAL 3.9) OR (${CMAKE_VERSION} VERSION_GREATER 3.9))
cmake_policy(SET CMP0069 NEW)
endif()
project(bin2h LANGUAGES C)
add_executable(bin2h "bin2h.c")
set_target_properties(bin2h PROPERTIES
C_STANDARD 90
C_STANDARD_REQUIRED ON
C_EXTENSIONS OFF
)
# MSVC tweak
if(MSVC)
target_compile_definitions(bin2h PRIVATE _CRT_SECURE_NO_WARNINGS) # Shut up those stupid warnings
endif()
# Enable link-time optimisation if available
if(NOT CMAKE_BUILD_TYPE STREQUAL "Debug")
if((${CMAKE_VERSION} VERSION_EQUAL 3.9) OR (${CMAKE_VERSION} VERSION_GREATER 3.9))
include(CheckIPOSupported)
check_ipo_supported(RESULT result)
if(result)
set_target_properties(bin2h PROPERTIES INTERPROCEDURAL_OPTIMIZATION TRUE)
endif()
endif()
endif()

View file

@ -29,7 +29,7 @@ int main(int argc, char *argv[])
filename_pointer = (last_path_seperator == NULL) ? argv[1] : last_path_seperator + 1; filename_pointer = (last_path_seperator == NULL) ? argv[1] : last_path_seperator + 1;
dot = strchr(filename_pointer, '.'); dot = strchr(filename_pointer, '.');
filename_length = (dot == NULL) ? strlen(filename_pointer) : dot - filename_pointer; filename_length = (dot == NULL) ? strlen(filename_pointer) : (size_t)(dot - filename_pointer);
filename = malloc(filename_length + 1); filename = malloc(filename_length + 1);
memcpy(filename, filename_pointer, filename_length); memcpy(filename, filename_pointer, filename_length);
@ -65,17 +65,17 @@ int main(int argc, char *argv[])
setvbuf(out_file, NULL, _IOFBF, 0x10000); setvbuf(out_file, NULL, _IOFBF, 0x10000);
fprintf(out_file, "#pragma once\n\nconst unsigned char r%s[0x%lX] = {\n\t", filename, in_file_size); fprintf(out_file, "#pragma once\n\nstatic const unsigned char r%s[0x%lX] = {\n\t", filename, in_file_size);
for (i = 0; i < in_file_size - 1; ++i) for (i = 0; i < in_file_size - 1; ++i)
{ {
if (i % 16 == 15) if (i % 32 == 32-1)
fprintf(out_file, "0x%02X,\n\t", *in_file_pointer++); fprintf(out_file, "%d,\n\t", *in_file_pointer++);
else else
fprintf(out_file, "0x%02X, ", *in_file_pointer++); fprintf(out_file, "%d,", *in_file_pointer++);
} }
fprintf(out_file, "0x%02X\n};\n", *in_file_pointer++); fprintf(out_file, "%d\n};\n", *in_file_pointer++);
fclose(out_file); fclose(out_file);
free(in_file_buffer); free(in_file_buffer);

View file

@ -1,9 +1,11 @@
#include "Back.h" #include "Back.h"
#include <stddef.h>
#include <stdio.h> #include <stdio.h>
#include "WindowsWrapper.h" #include "WindowsWrapper.h"
#include "CommonDefines.h"
#include "Draw.h" #include "Draw.h"
#include "File.h" #include "File.h"
#include "Frame.h" #include "Frame.h"
@ -250,7 +252,7 @@ void PutFront(int fx, int fy)
// Draw black bars // Draw black bars
if (!(g_GameFlags & 8)) // Detect if credits are running 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 focusX = gFrame.x + (WINDOW_WIDTH << 8) - (320 << 8);

View file

@ -6,6 +6,7 @@
#include "Frame.h" #include "Frame.h"
#include "Game.h" #include "Game.h"
#include "MyChar.h" #include "MyChar.h"
#include "NpChar.h"
#include "Sound.h" #include "Sound.h"
void ActBossChar_Ironhead(void) void ActBossChar_Ironhead(void)

View file

@ -5,6 +5,7 @@
#include "Boss.h" #include "Boss.h"
#include "Game.h" #include "Game.h"
#include "Map.h" #include "Map.h"
#include "NpChar.h"
#include "Sound.h" #include "Sound.h"
void ActBossChar_Press(void) void ActBossChar_Press(void)

View file

@ -1,13 +1,9 @@
#include "BulHit.h" #include "BulHit.h"
#include <stdio.h>
#include <string.h>
#include "Bullet.h" #include "Bullet.h"
#include "Caret.h" #include "Caret.h"
#include "Game.h" #include "Game.h"
#include "Map.h" #include "Map.h"
#include "MyChar.h"
#include "NpChar.h" #include "NpChar.h"
#include "Sound.h" #include "Sound.h"

View file

@ -8,7 +8,6 @@
#include "Config.h" #include "Config.h"
#include "File.h" #include "File.h"
#include "Tags.h" #include "Tags.h"
#include "Types.h"
static const char* const config_filename = "Config.dat"; // Not the original name static const char* const config_filename = "Config.dat"; // Not the original name
static const char* const config_magic = "DOUKUTSU20041206"; // Not the original name static const char* const config_magic = "DOUKUTSU20041206"; // Not the original name

View file

@ -1,5 +1,8 @@
#include <stddef.h> #include <stddef.h>
#include <stdio.h> #include <stdio.h>
#ifdef WINDOWS
#include <stdlib.h>
#endif
#include <string.h> #include <string.h>
#ifdef WINDOWS #ifdef WINDOWS
@ -23,12 +26,11 @@
#include "Font.h" #include "Font.h"
#include "Resource.h" #include "Resource.h"
#include "Tags.h" #include "Tags.h"
#include "Types.h"
struct SURFACE struct SURFACE
{ {
bool in_use; BOOL in_use;
bool needs_updating; BOOL needs_updating;
SDL_Surface *surface; SDL_Surface *surface;
SDL_Texture *texture; SDL_Texture *texture;
}; };
@ -40,7 +42,7 @@ RECT grcGame = {0, 0, WINDOW_WIDTH, WINDOW_HEIGHT};
RECT grcFull = {0, 0, WINDOW_WIDTH, WINDOW_HEIGHT}; RECT grcFull = {0, 0, WINDOW_WIDTH, WINDOW_HEIGHT};
int magnification; int magnification;
bool fullscreen; BOOL fullscreen;
SURFACE surf[SURFACE_ID_MAX]; SURFACE surf[SURFACE_ID_MAX];
@ -52,7 +54,7 @@ BOOL Flip_SystemTask(int hWnd)
{ {
(void)hWnd; (void)hWnd;
while (true) while (TRUE)
{ {
if (!SystemTask()) if (!SystemTask())
return FALSE; return FALSE;
@ -99,17 +101,17 @@ BOOL StartDirectDraw(int lMagnification, int lColourDepth)
{ {
case 0: case 0:
magnification = 1; magnification = 1;
fullscreen = false; fullscreen = FALSE;
break; break;
case 1: case 1:
magnification = 2; magnification = 2;
fullscreen = false; fullscreen = FALSE;
break; break;
case 2: case 2:
magnification = 2; magnification = 2;
fullscreen = true; fullscreen = TRUE;
SDL_SetWindowFullscreen(gWindow, SDL_WINDOW_FULLSCREEN); SDL_SetWindowFullscreen(gWindow, SDL_WINDOW_FULLSCREEN);
break; break;
} }
@ -129,7 +131,7 @@ void EndDirectDraw()
ReleaseSurface(i); ReleaseSurface(i);
} }
static bool IsEnableBitmap(SDL_RWops *fp) static BOOL IsEnableBitmap(SDL_RWops *fp)
{ {
char str[16]; char str[16];
const char *extra_text = "(C)Pixel"; const char *extra_text = "(C)Pixel";
@ -149,7 +151,7 @@ void ReleaseSurface(int s)
{ {
SDL_DestroyTexture(surf[s].texture); SDL_DestroyTexture(surf[s].texture);
SDL_FreeSurface(surf[s].surface); SDL_FreeSurface(surf[s].surface);
surf[s].in_use = false; surf[s].in_use = FALSE;
} }
} }
@ -169,7 +171,7 @@ BOOL MakeSurface_Generic(int bxsize, int bysize, Surface_Ids surf_no, BOOL bSyst
} }
else else
{ {
if (surf[surf_no].in_use == true) if (surf[surf_no].in_use == TRUE)
{ {
printf("Tried to create drawable surface at occupied slot (%d)\n", surf_no); printf("Tried to create drawable surface at occupied slot (%d)\n", surf_no);
} }
@ -194,7 +196,7 @@ BOOL MakeSurface_Generic(int bxsize, int bysize, Surface_Ids surf_no, BOOL bSyst
} }
else else
{ {
surf[surf_no].in_use = true; surf[surf_no].in_use = TRUE;
success = TRUE; success = TRUE;
} }
} }
@ -231,9 +233,9 @@ static void FlushSurface(Surface_Ids surf_no)
SDL_UnlockTexture(surf[surf_no].texture); SDL_UnlockTexture(surf[surf_no].texture);
} }
static bool LoadBitmap(SDL_RWops *fp, Surface_Ids surf_no, bool create_surface) static BOOL LoadBitmap(SDL_RWops *fp, Surface_Ids surf_no, BOOL create_surface)
{ {
bool success = false; BOOL success = FALSE;
if (surf_no >= SURFACE_ID_MAX) if (surf_no >= SURFACE_ID_MAX)
{ {
@ -255,15 +257,15 @@ static bool LoadBitmap(SDL_RWops *fp, Surface_Ids surf_no, bool create_surface)
} }
else else
{ {
if (create_surface == false || MakeSurface_Generic(surface->w, surface->h, surf_no, FALSE)) if (create_surface == FALSE || MakeSurface_Generic(surface->w, surface->h, surf_no, FALSE))
{ {
if (magnification == 1) if (magnification == 1)
{ {
SDL_Rect dst_rect = {0, 0, surface->w, surface->h}; SDL_Rect dst_rect = {0, 0, surface->w, surface->h};
SDL_BlitSurface(surface, NULL, surf[surf_no].surface, &dst_rect); SDL_BlitSurface(surface, NULL, surf[surf_no].surface, &dst_rect);
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 else
{ {
@ -301,9 +303,9 @@ static bool LoadBitmap(SDL_RWops *fp, Surface_Ids surf_no, bool create_surface)
} }
SDL_FreeSurface(converted_surface); 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;
} }
} }
} }
@ -318,7 +320,7 @@ static bool LoadBitmap(SDL_RWops *fp, Surface_Ids surf_no, bool create_surface)
return success; return success;
} }
static BOOL LoadBitmap_File(const char *name, Surface_Ids surf_no, bool create_surface) static BOOL LoadBitmap_File(const char *name, Surface_Ids surf_no, BOOL create_surface)
{ {
char path[PATH_LENGTH]; char path[PATH_LENGTH];
SDL_RWops *fp; SDL_RWops *fp;
@ -355,7 +357,7 @@ static BOOL LoadBitmap_File(const char *name, Surface_Ids surf_no, bool create_s
return FALSE; return FALSE;
} }
static BOOL LoadBitmap_Resource(const char *res, Surface_Ids surf_no, bool create_surface) static BOOL LoadBitmap_Resource(const char *res, Surface_Ids surf_no, BOOL create_surface)
{ {
size_t size; size_t size;
const unsigned char *data = FindResource(res, "BITMAP", &size); const unsigned char *data = FindResource(res, "BITMAP", &size);
@ -378,22 +380,22 @@ static BOOL LoadBitmap_Resource(const char *res, Surface_Ids surf_no, bool creat
BOOL MakeSurface_File(const char *name, Surface_Ids surf_no) BOOL MakeSurface_File(const char *name, Surface_Ids surf_no)
{ {
return LoadBitmap_File(name, surf_no, true); return LoadBitmap_File(name, surf_no, TRUE);
} }
BOOL MakeSurface_Resource(const char *res, Surface_Ids surf_no) BOOL MakeSurface_Resource(const char *res, Surface_Ids surf_no)
{ {
return LoadBitmap_Resource(res, surf_no, true); return LoadBitmap_Resource(res, surf_no, TRUE);
} }
BOOL ReloadBitmap_File(const char *name, Surface_Ids surf_no) BOOL ReloadBitmap_File(const char *name, Surface_Ids surf_no)
{ {
return LoadBitmap_File(name, surf_no, false); return LoadBitmap_File(name, surf_no, FALSE);
} }
BOOL ReloadBitmap_Resource(const char *res, Surface_Ids surf_no) BOOL ReloadBitmap_Resource(const char *res, Surface_Ids surf_no)
{ {
return LoadBitmap_Resource(res, surf_no, false); return LoadBitmap_Resource(res, surf_no, FALSE);
} }
static SDL_Rect RectToSDLRect(RECT *rect) static SDL_Rect RectToSDLRect(RECT *rect)
@ -431,18 +433,18 @@ void BackupSurface(Surface_Ids surf_no, RECT *rect)
SDL_Rect frameRect = RectToSDLRectScaled(rect); SDL_Rect frameRect = RectToSDLRectScaled(rect);
SDL_BlitSurface(surface, &frameRect, surf[surf_no].surface, &frameRect); SDL_BlitSurface(surface, &frameRect, surf[surf_no].surface, &frameRect);
surf[surf_no].needs_updating = true; surf[surf_no].needs_updating = TRUE;
// Free surface // Free surface
SDL_FreeSurface(surface); SDL_FreeSurface(surface);
} }
static void DrawBitmap(RECT *rcView, int x, int y, RECT *rect, Surface_Ids surf_no, bool transparent) static void DrawBitmap(RECT *rcView, int x, int y, RECT *rect, Surface_Ids surf_no, BOOL transparent)
{ {
if (surf[surf_no].needs_updating) if (surf[surf_no].needs_updating)
{ {
FlushSurface(surf_no); FlushSurface(surf_no);
surf[surf_no].needs_updating = false; surf[surf_no].needs_updating = FALSE;
} }
// Get SDL_Rects // Get SDL_Rects
@ -467,12 +469,12 @@ static void DrawBitmap(RECT *rcView, int x, int y, RECT *rect, Surface_Ids surf_
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); 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); DrawBitmap(rcView, x, y, rect, surf_no, FALSE);
} }
void Surface2Surface(int x, int y, RECT *rect, int to, int from) void Surface2Surface(int x, int y, RECT *rect, int to, int from)
@ -482,7 +484,7 @@ void Surface2Surface(int x, int y, RECT *rect, int to, int from)
SDL_Rect frameRect = RectToSDLRectScaled(rect); SDL_Rect frameRect = RectToSDLRectScaled(rect);
SDL_BlitSurface(surf[from].surface, &frameRect, surf[to].surface, &rcSet); SDL_BlitSurface(surf[from].surface, &frameRect, surf[to].surface, &rcSet);
surf[to].needs_updating = true; surf[to].needs_updating = TRUE;
} }
unsigned long GetCortBoxColor(unsigned long col) unsigned long GetCortBoxColor(unsigned long col)
@ -514,7 +516,7 @@ void CortBox2(RECT *rect, unsigned long col, Surface_Ids surf_no)
const unsigned char col_green = (unsigned char)((col >> 8) & 0xFF); const unsigned char col_green = (unsigned char)((col >> 8) & 0xFF);
const unsigned char col_blue = (unsigned char)((col >> 16) & 0xFF); const unsigned char col_blue = (unsigned char)((col >> 16) & 0xFF);
SDL_FillRect(surf[surf_no].surface, &destRect, SDL_MapRGB(surf[surf_no].surface->format, col_red, col_green, col_blue)); SDL_FillRect(surf[surf_no].surface, &destRect, SDL_MapRGB(surf[surf_no].surface->format, col_red, col_green, col_blue));
surf[surf_no].needs_updating = true; surf[surf_no].needs_updating = TRUE;
} }
#ifdef WINDOWS #ifdef WINDOWS
@ -635,7 +637,7 @@ void PutText(int x, int y, const char *text, unsigned long color)
void PutText2(int x, int y, const char *text, unsigned long color, Surface_Ids surf_no) void PutText2(int x, int y, const char *text, unsigned long color, Surface_Ids surf_no)
{ {
DrawText(gFont, (unsigned char*)surf[surf_no].surface->pixels, surf[surf_no].surface->pitch, surf[surf_no].surface->w, surf[surf_no].surface->h, x * magnification, y * magnification, color, text, strlen(text)); DrawText(gFont, (unsigned char*)surf[surf_no].surface->pixels, surf[surf_no].surface->pitch, surf[surf_no].surface->w, surf[surf_no].surface->h, x * magnification, y * magnification, color, text, strlen(text));
surf[surf_no].needs_updating = true; surf[surf_no].needs_updating = TRUE;
} }
void EndTextObject() void EndTextObject()

View file

@ -10,7 +10,7 @@ extern RECT grcGame;
extern RECT grcFull; extern RECT grcFull;
extern int magnification; extern int magnification;
extern bool fullscreen; extern BOOL fullscreen;
typedef enum Surface_Ids typedef enum Surface_Ids
{ {

View file

@ -2,6 +2,8 @@
#include "WindowsWrapper.h" #include "WindowsWrapper.h"
#include "CommonDefines.h"
struct CREDIT struct CREDIT
{ {
int size; int size;

View file

@ -6,7 +6,6 @@
#include "WindowsWrapper.h" #include "WindowsWrapper.h"
#include "Draw.h" #include "Draw.h"
#include "Game.h"
#define FADE_WIDTH (((WINDOW_WIDTH - 1) / 16) + 1) #define FADE_WIDTH (((WINDOW_WIDTH - 1) / 16) + 1)
#define FADE_HEIGHT (((WINDOW_HEIGHT - 1) / 16) + 1) #define FADE_HEIGHT (((WINDOW_HEIGHT - 1) / 16) + 1)

View file

@ -2,7 +2,6 @@
#include <math.h> #include <math.h>
#include <stddef.h> #include <stddef.h>
#include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
@ -11,6 +10,8 @@
#include FT_LCD_FILTER_H #include FT_LCD_FILTER_H
#include FT_BITMAP_H #include FT_BITMAP_H
#include "WindowsWrapper.h"
#include "File.h" #include "File.h"
// Uncomment for that authentic pre-Windows Vista feel // Uncomment for that authentic pre-Windows Vista feel
@ -39,7 +40,7 @@ typedef struct FontObject
FT_Face face; FT_Face face;
unsigned char *data; unsigned char *data;
#ifndef DISABLE_FONT_ANTIALIASING #ifndef DISABLE_FONT_ANTIALIASING
bool lcd_mode; BOOL lcd_mode;
#endif #endif
CachedGlyph *glyph_list_head; CachedGlyph *glyph_list_head;
} FontObject; } FontObject;

View file

@ -1,7 +1,5 @@
#include "Frame.h" #include "Frame.h"
#include <string.h>
#include "Boss.h" #include "Boss.h"
#include "CommonDefines.h" #include "CommonDefines.h"
#include "Game.h" #include "Game.h"
@ -16,7 +14,7 @@ void MoveFrame3()
short map_w, map_l; short map_w, map_l;
GetMapData(0, &map_w, &map_l); GetMapData(0, &map_w, &map_l);
#if WINDOW_WIDTH != 320 || WINDOW_HEIGHT != 240 // TODO - Really need to make this a compiler flag #if WINDOW_WIDTH != 320 || WINDOW_HEIGHT != 240 // TODO - Really need to make this a compiler flag (also, should probably move this stuff to the enhanced branch)
if (g_GameFlags & 8) if (g_GameFlags & 8)
{ {
// Use the original camera boundaries during the credits // Use the original camera boundaries during the credits
@ -41,7 +39,7 @@ void MoveFrame3()
// Widescreen/tallscreen-safe behaviour // Widescreen/tallscreen-safe behaviour
if (map_w * 0x10 < WINDOW_WIDTH) if (map_w * 0x10 < WINDOW_WIDTH)
{ {
gFrame.x = -((WINDOW_WIDTH - map_w * 0x10) * 0x200 / 2); gFrame.x = -(((WINDOW_WIDTH - (map_w - 1) * 0x10) * 0x200) / 2);
} }
else else
{ {
@ -56,7 +54,7 @@ void MoveFrame3()
if (map_l * 0x10 < WINDOW_HEIGHT) if (map_l * 0x10 < WINDOW_HEIGHT)
{ {
gFrame.y = -((WINDOW_HEIGHT - map_l * 0x10) * 0x200 / 2); gFrame.y = -(((WINDOW_HEIGHT - (map_l - 1) * 0x10) * 0x200) / 2);
} }
else else
{ {
@ -126,15 +124,64 @@ void SetFramePosition(int fx, int fy)
gFrame.y = fy; gFrame.y = fy;
// Keep in bounds // Keep in bounds
#if WINDOW_WIDTH != 320 || WINDOW_HEIGHT != 240
if (g_GameFlags & 8)
{
// Use the original camera boundaries during the credits
if (gFrame.x / 0x200 < 0) if (gFrame.x / 0x200 < 0)
gFrame.x = 0; gFrame.x = 0;
if (gFrame.y / 0x200 < 0) if (gFrame.y / 0x200 < 0)
gFrame.y = 0; gFrame.y = 0;
if (gFrame.x > ((((map_w - 1) * 0x10) - WINDOW_WIDTH)) * 0x200) if (gFrame.x > ((map_w - 1) * 0x10 - 320) * 0x200)
gFrame.x = ((map_w - 1) * 0x10 - 320) * 0x200;
if (gFrame.y > ((map_l - 1) * 0x10 - 240) * 0x200)
gFrame.y = ((map_l - 1) * 0x10 - 240) * 0x200;
gFrame.x -= ((WINDOW_WIDTH - 320) / 2) * 0x200;
gFrame.y -= ((WINDOW_HEIGHT - 240) / 2) * 0x200;
}
else
{
// Widescreen/tallscreen-safe behaviour
if (map_w * 0x10 < WINDOW_WIDTH)
{
gFrame.x = -(((WINDOW_WIDTH - (map_w - 1) * 0x10) * 0x200) / 2);
}
else
{
if (gFrame.x / 0x200 < 0)
gFrame.x = 0;
if (gFrame.x > ((map_w - 1) * 0x10 - WINDOW_WIDTH) * 0x200)
gFrame.x = ((map_w - 1) * 0x10 - WINDOW_WIDTH) * 0x200;
}
if (map_l * 0x10 < WINDOW_HEIGHT)
{
gFrame.y = -(((WINDOW_HEIGHT - (map_l - 1) * 0x10) * 0x200) / 2);
}
else
{
if (gFrame.y / 0x200 < 0)
gFrame.y = 0;
if (gFrame.y > ((map_l - 1) * 0x10 - WINDOW_HEIGHT) * 0x200)
gFrame.y = ((map_l - 1) * 0x10 - WINDOW_HEIGHT) * 0x200;
}
}
#else
// Vanilla behaviour
if (gFrame.x / 0x200 < 0)
gFrame.x = 0;
if (gFrame.y / 0x200 < 0)
gFrame.y = 0;
if (gFrame.x > (((map_w - 1) * 0x10) - WINDOW_WIDTH) * 0x200)
gFrame.x = (((map_w - 1) * 0x10) - WINDOW_WIDTH) * 0x200; gFrame.x = (((map_w - 1) * 0x10) - WINDOW_WIDTH) * 0x200;
if (gFrame.y > ((((map_l - 1) * 0x10) - WINDOW_HEIGHT)) * 0x200) if (gFrame.y > (((map_l - 1) * 0x10) - WINDOW_HEIGHT) * 0x200)
gFrame.y = (((map_l - 1) * 0x10) - WINDOW_HEIGHT) * 0x200; gFrame.y = (((map_l - 1) * 0x10) - WINDOW_HEIGHT) * 0x200;
#endif
} }
void SetFrameMyChar() void SetFrameMyChar()
@ -150,15 +197,64 @@ void SetFrameMyChar()
gFrame.y = mc_y - (WINDOW_HEIGHT << 8); gFrame.y = mc_y - (WINDOW_HEIGHT << 8);
// Keep in bounds // Keep in bounds
#if WINDOW_WIDTH != 320 || WINDOW_HEIGHT != 240
if (g_GameFlags & 8)
{
// Use the original camera boundaries during the credits
if (gFrame.x / 0x200 < 0) if (gFrame.x / 0x200 < 0)
gFrame.x = 0; gFrame.x = 0;
if (gFrame.y / 0x200 < 0) if (gFrame.y / 0x200 < 0)
gFrame.y = 0; gFrame.y = 0;
if (gFrame.x > ((((map_w - 1) * 0x10) - WINDOW_WIDTH)) * 0x200) if (gFrame.x > ((map_w - 1) * 0x10 - 320) * 0x200)
gFrame.x = ((map_w - 1) * 0x10 - 320) * 0x200;
if (gFrame.y > ((map_l - 1) * 0x10 - 240) * 0x200)
gFrame.y = ((map_l - 1) * 0x10 - 240) * 0x200;
gFrame.x -= ((WINDOW_WIDTH - 320) / 2) * 0x200;
gFrame.y -= ((WINDOW_HEIGHT - 240) / 2) * 0x200;
}
else
{
// Widescreen/tallscreen-safe behaviour
if (map_w * 0x10 < WINDOW_WIDTH)
{
gFrame.x = -(((WINDOW_WIDTH - (map_w - 1) * 0x10) * 0x200) / 2);
}
else
{
if (gFrame.x / 0x200 < 0)
gFrame.x = 0;
if (gFrame.x > ((map_w - 1) * 0x10 - WINDOW_WIDTH) * 0x200)
gFrame.x = ((map_w - 1) * 0x10 - WINDOW_WIDTH) * 0x200;
}
if (map_l * 0x10 < WINDOW_HEIGHT)
{
gFrame.y = -(((WINDOW_HEIGHT - (map_l - 1) * 0x10) * 0x200) / 2);
}
else
{
if (gFrame.y / 0x200 < 0)
gFrame.y = 0;
if (gFrame.y > ((map_l - 1) * 0x10 - WINDOW_HEIGHT) * 0x200)
gFrame.y = ((map_l - 1) * 0x10 - WINDOW_HEIGHT) * 0x200;
}
}
#else
// Vanilla behaviour
if (gFrame.x / 0x200 < 0)
gFrame.x = 0;
if (gFrame.y / 0x200 < 0)
gFrame.y = 0;
if (gFrame.x > (((map_w - 1) * 0x10) - WINDOW_WIDTH) * 0x200)
gFrame.x = (((map_w - 1) * 0x10) - WINDOW_WIDTH) * 0x200; gFrame.x = (((map_w - 1) * 0x10) - WINDOW_WIDTH) * 0x200;
if (gFrame.y > ((((map_l - 1) * 0x10) - WINDOW_HEIGHT)) * 0x200) if (gFrame.y > (((map_l - 1) * 0x10) - WINDOW_HEIGHT) * 0x200)
gFrame.y = (((map_l - 1) * 0x10) - WINDOW_HEIGHT) * 0x200; gFrame.y = (((map_l - 1) * 0x10) - WINDOW_HEIGHT) * 0x200;
#endif
} }
void SetFrameTargetMyChar(int wait) void SetFrameTargetMyChar(int wait)

View file

@ -1,8 +1,7 @@
#include "Game.h" #include "Game.h"
#include <stdlib.h> #include <stddef.h>
#include <stdio.h> #include <stdio.h>
#include <string.h>
#include <SDL_timer.h> #include <SDL_timer.h>
@ -15,6 +14,7 @@
#include "BulHit.h" #include "BulHit.h"
#include "Bullet.h" #include "Bullet.h"
#include "Caret.h" #include "Caret.h"
#include "CommonDefines.h"
#include "Draw.h" #include "Draw.h"
#include "Ending.h" #include "Ending.h"
#include "Escape.h" #include "Escape.h"
@ -35,7 +35,6 @@
#include "NpChar.h" #include "NpChar.h"
#include "NpcHit.h" #include "NpcHit.h"
#include "NpcTbl.h" #include "NpcTbl.h"
#include "Organya.h"
#include "Profile.h" #include "Profile.h"
#include "SelStage.h" #include "SelStage.h"
#include "Shoot.h" #include "Shoot.h"

View file

@ -3,14 +3,10 @@
#include <stddef.h> #include <stddef.h>
#include <string.h> #include <string.h>
#include <SDL.h> #include "SDL.h"
#include "WindowsWrapper.h" #include "WindowsWrapper.h"
#include "CommonDefines.h"
#include "Tags.h"
#include "Types.h"
#define JOYSTICK_DEADZONE 10000 #define JOYSTICK_DEADZONE 10000
SDL_Joystick *joystick; // This was probably a name that was given by Simon, but it fits the rest of Pixel's names so it's fine. SDL_Joystick *joystick; // This was probably a name that was given by Simon, but it fits the rest of Pixel's names so it's fine.
@ -26,7 +22,7 @@ void ReleaseDirectInput()
} }
} }
bool InitDirectInput() BOOL InitDirectInput()
{ {
// Open first available joystick // Open first available joystick
SDL_InitSubSystem(SDL_INIT_JOYSTICK); SDL_InitSubSystem(SDL_INIT_JOYSTICK);
@ -40,10 +36,10 @@ bool InitDirectInput()
break; break;
} }
return true; return TRUE;
} }
bool GetJoystickStatus(JOYSTICK_STATUS *pStatus) BOOL GetJoystickStatus(JOYSTICK_STATUS *pStatus)
{ {
// Clear status // Clear status
memset(pStatus, 0, sizeof(JOYSTICK_STATUS)); memset(pStatus, 0, sizeof(JOYSTICK_STATUS));
@ -64,13 +60,13 @@ bool GetJoystickStatus(JOYSTICK_STATUS *pStatus)
for (int button = 0; button < numButtons; button++) for (int button = 0; button < numButtons; button++)
pStatus->bButton[button] = SDL_JoystickGetButton(joystick, button) != 0; pStatus->bButton[button] = SDL_JoystickGetButton(joystick, button) != 0;
return true; return TRUE;
} }
return false; return FALSE;
} }
bool ResetJoystickStatus() BOOL ResetJoystickStatus()
{ {
return true; return TRUE;
} }

View file

@ -1,18 +1,20 @@
#pragma once #pragma once
extern bool gbUseJoystick; #include "WindowsWrapper.h"
extern BOOL gbUseJoystick;
extern int gJoystickButtonTable[8]; extern int gJoystickButtonTable[8];
struct JOYSTICK_STATUS struct JOYSTICK_STATUS
{ {
bool bLeft; BOOL bLeft;
bool bRight; BOOL bRight;
bool bUp; BOOL bUp;
bool bDown; BOOL bDown;
bool bButton[32]; BOOL bButton[32];
}; };
void ReleaseDirectInput(); void ReleaseDirectInput();
bool InitDirectInput(); BOOL InitDirectInput();
bool GetJoystickStatus(JOYSTICK_STATUS *pStatus); BOOL GetJoystickStatus(JOYSTICK_STATUS *pStatus);
bool ResetJoystickStatus(); BOOL ResetJoystickStatus();

View file

@ -4,7 +4,7 @@
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#include <SDL.h> #include "SDL.h"
#include "WindowsWrapper.h" #include "WindowsWrapper.h"
@ -21,7 +21,6 @@
#include "Resource.h" #include "Resource.h"
#include "Sound.h" #include "Sound.h"
#include "Triangle.h" #include "Triangle.h"
#include "Types.h"
// These two are defined in Draw.cpp. This is a bit of a hack. // These two are defined in Draw.cpp. This is a bit of a hack.
extern SDL_Window *gWindow; extern SDL_Window *gWindow;
@ -33,10 +32,10 @@ char gDataPath[PATH_LENGTH];
int gJoystickButtonTable[8]; int gJoystickButtonTable[8];
int ghWnd; // Placeholder until we restore the WinAPI code int ghWnd; // Placeholder until we restore the WinAPI code
bool gbUseJoystick = false; BOOL gbUseJoystick = FALSE;
bool bFps = false; BOOL bFps = FALSE;
bool bActive = true; BOOL bActive = TRUE;
#ifdef JAPANESE #ifdef JAPANESE
const char *lpWindowName = "洞窟物語エンジン2"; const char *lpWindowName = "洞窟物語エンジン2";
@ -68,7 +67,7 @@ void PutFramePerSecound()
int GetFramePerSecound() int GetFramePerSecound()
{ {
unsigned int current_tick; unsigned int current_tick;
static bool need_new_base_tick = true; static BOOL need_new_base_tick = TRUE;
static int frames_this_second; static int frames_this_second;
static int current_frame; static int current_frame;
static int base_tick; static int base_tick;
@ -76,7 +75,7 @@ int GetFramePerSecound()
if (need_new_base_tick) if (need_new_base_tick)
{ {
base_tick = SDL_GetTicks(); base_tick = SDL_GetTicks();
need_new_base_tick = false; need_new_base_tick = FALSE;
} }
current_tick = SDL_GetTicks(); current_tick = SDL_GetTicks();
@ -299,7 +298,7 @@ int main(int argc, char *argv[])
StartDirectDraw(2, colourDepth); StartDirectDraw(2, colourDepth);
fullscreen = true; fullscreen = TRUE;
SDL_ShowCursor(0); SDL_ShowCursor(0);
break; break;
} }
@ -313,7 +312,7 @@ int main(int argc, char *argv[])
{ {
// Check debug things // Check debug things
if (CheckFileExists("fps")) if (CheckFileExists("fps"))
bFps = true; bFps = TRUE;
#ifndef WINDOWS #ifndef WINDOWS
// Load icon // Load icon
@ -359,7 +358,7 @@ int main(int argc, char *argv[])
if (config.bJoystick && InitDirectInput()) if (config.bJoystick && InitDirectInput())
{ {
ResetJoystickStatus(); ResetJoystickStatus();
gbUseJoystick = true; gbUseJoystick = TRUE;
} }
// Initialize stuff // Initialize stuff
@ -390,7 +389,7 @@ void InactiveWindow()
{ {
if (bActive) if (bActive)
{ {
bActive = false; bActive = FALSE;
StopOrganyaMusic(); StopOrganyaMusic();
SleepNoise(); SleepNoise();
} }
@ -402,7 +401,7 @@ void ActiveWindow()
{ {
if (!bActive) if (!bActive)
{ {
bActive = true; bActive = TRUE;
StopOrganyaMusic(); StopOrganyaMusic();
PlayOrganyaMusic(); PlayOrganyaMusic();
ResetNoise(); ResetNoise();
@ -446,10 +445,10 @@ void JoystickProc()
gKey &= ~key; \ gKey &= ~key; \
break; break;
bool SystemTask() BOOL SystemTask()
{ {
// Handle window events // Handle window events
bool focusGained = true; BOOL focusGained = TRUE;
while (SDL_PollEvent(NULL) || !focusGained) while (SDL_PollEvent(NULL) || !focusGained)
{ {
@ -459,19 +458,19 @@ bool SystemTask()
switch (event.type) switch (event.type)
{ {
case SDL_QUIT: case SDL_QUIT:
return false; return FALSE;
break; break;
case SDL_WINDOWEVENT: case SDL_WINDOWEVENT:
switch (event.window.event) switch (event.window.event)
{ {
case SDL_WINDOWEVENT_FOCUS_GAINED: case SDL_WINDOWEVENT_FOCUS_GAINED:
focusGained = true; focusGained = TRUE;
ActiveWindow(); ActiveWindow();
break; break;
case SDL_WINDOWEVENT_FOCUS_LOST: case SDL_WINDOWEVENT_FOCUS_LOST:
focusGained = false; focusGained = FALSE;
InactiveWindow(); InactiveWindow();
break; break;
@ -552,7 +551,7 @@ bool SystemTask()
DO_KEY_PRESS(KEY_PLUS) DO_KEY_PRESS(KEY_PLUS)
case SDL_SCANCODE_F5: case SDL_SCANCODE_F5:
gbUseJoystick = false; gbUseJoystick = FALSE;
break; break;
default: default:
@ -621,7 +620,7 @@ bool SystemTask()
DO_KEY_PRESS(KEY_PLUS) DO_KEY_PRESS(KEY_PLUS)
case SDLK_F5: case SDLK_F5:
gbUseJoystick = false; gbUseJoystick = FALSE;
break; break;
} }
break; break;
@ -633,5 +632,5 @@ bool SystemTask()
if (gbUseJoystick) if (gbUseJoystick)
JoystickProc(); JoystickProc();
return true; return TRUE;
} }

View file

@ -1,6 +1,7 @@
#include "Map.h" #include "Map.h"
#include <stddef.h> #include <stddef.h>
#include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>

View file

@ -7,7 +7,6 @@
#include "CommonDefines.h" #include "CommonDefines.h"
#include "Draw.h" #include "Draw.h"
#include "Escape.h" #include "Escape.h"
#include "Game.h"
#include "KeyControl.h" #include "KeyControl.h"
#include "Main.h" #include "Main.h"
#include "Map.h" #include "Map.h"

View file

@ -1,5 +1,7 @@
#include "MycParam.h" #include "MycParam.h"
#include <stdio.h>
#include "SDL.h" #include "SDL.h"
#include "WindowsWrapper.h" #include "WindowsWrapper.h"

View file

@ -2,7 +2,6 @@
#include "WindowsWrapper.h" #include "WindowsWrapper.h"
#include "Back.h"
#include "Caret.h" #include "Caret.h"
#include "Game.h" #include "Game.h"
#include "Frame.h" #include "Frame.h"

View file

@ -2,7 +2,6 @@
#include "WindowsWrapper.h" #include "WindowsWrapper.h"
#include "Back.h"
#include "Caret.h" #include "Caret.h"
#include "CommonDefines.h" #include "CommonDefines.h"
#include "Game.h" #include "Game.h"

View file

@ -2,8 +2,8 @@
#include "WindowsWrapper.h" #include "WindowsWrapper.h"
#include "Back.h"
#include "CommonDefines.h" #include "CommonDefines.h"
#include "Draw.h"
#include "Flash.h" #include "Flash.h"
#include "Frame.h" #include "Frame.h"
#include "Game.h" #include "Game.h"

View file

@ -2,7 +2,6 @@
#include "WindowsWrapper.h" #include "WindowsWrapper.h"
#include "Back.h"
#include "Bullet.h" #include "Bullet.h"
#include "Caret.h" #include "Caret.h"
#include "Frame.h" #include "Frame.h"
@ -10,7 +9,6 @@
#include "MyChar.h" #include "MyChar.h"
#include "NpChar.h" #include "NpChar.h"
#include "Sound.h" #include "Sound.h"
#include "Triangle.h"
// Grate // Grate
void ActNpc100(NPCHAR *npc) void ActNpc100(NPCHAR *npc)

View file

@ -2,7 +2,6 @@
#include "WindowsWrapper.h" #include "WindowsWrapper.h"
#include "Back.h"
#include "Bullet.h" #include "Bullet.h"
#include "Caret.h" #include "Caret.h"
#include "Frame.h" #include "Frame.h"

View file

@ -2,7 +2,6 @@
#include "WindowsWrapper.h" #include "WindowsWrapper.h"
#include "Back.h"
#include "Bullet.h" #include "Bullet.h"
#include "Caret.h" #include "Caret.h"
#include "CommonDefines.h" #include "CommonDefines.h"

View file

@ -2,7 +2,6 @@
#include "WindowsWrapper.h" #include "WindowsWrapper.h"
#include "Back.h"
#include "Caret.h" #include "Caret.h"
#include "CommonDefines.h" #include "CommonDefines.h"
#include "Frame.h" #include "Frame.h"

View file

@ -2,7 +2,6 @@
#include "WindowsWrapper.h" #include "WindowsWrapper.h"
#include "Back.h"
#include "Bullet.h" #include "Bullet.h"
#include "Caret.h" #include "Caret.h"
#include "Frame.h" #include "Frame.h"

View file

@ -2,10 +2,7 @@
#include "WindowsWrapper.h" #include "WindowsWrapper.h"
#include "Back.h"
#include "Bullet.h"
#include "Caret.h" #include "Caret.h"
#include "Frame.h"
#include "Game.h" #include "Game.h"
#include "MyChar.h" #include "MyChar.h"
#include "NpChar.h" #include "NpChar.h"

View file

@ -2,7 +2,6 @@
#include "WindowsWrapper.h" #include "WindowsWrapper.h"
#include "Back.h"
#include "Caret.h" #include "Caret.h"
#include "Frame.h" #include "Frame.h"
#include "Game.h" #include "Game.h"

View file

@ -2,7 +2,6 @@
#include "WindowsWrapper.h" #include "WindowsWrapper.h"
#include "Back.h"
#include "Caret.h" #include "Caret.h"
#include "Frame.h" #include "Frame.h"
#include "Game.h" #include "Game.h"

View file

@ -2,7 +2,6 @@
#include "WindowsWrapper.h" #include "WindowsWrapper.h"
#include "Back.h"
#include "Boss.h" #include "Boss.h"
#include "Frame.h" #include "Frame.h"
#include "Game.h" #include "Game.h"

View file

@ -4,7 +4,6 @@
#include "WindowsWrapper.h" #include "WindowsWrapper.h"
#include "Back.h"
#include "Boss.h" #include "Boss.h"
#include "Bullet.h" #include "Bullet.h"
#include "Caret.h" #include "Caret.h"

View file

@ -1,8 +1,9 @@
#include "NpcAct.h" #include "NpcAct.h"
#include <stddef.h>
#include "WindowsWrapper.h" #include "WindowsWrapper.h"
#include "Back.h"
#include "Bullet.h" #include "Bullet.h"
#include "Caret.h" #include "Caret.h"
#include "Frame.h" #include "Frame.h"
@ -12,7 +13,6 @@
#include "MyChar.h" #include "MyChar.h"
#include "NpChar.h" #include "NpChar.h"
#include "Sound.h" #include "Sound.h"
#include "Triangle.h"
// Curly (carried, shooting) // Curly (carried, shooting)
void ActNpc320(NPCHAR *npc) void ActNpc320(NPCHAR *npc)

View file

@ -2,9 +2,9 @@
#include "WindowsWrapper.h" #include "WindowsWrapper.h"
#include "Back.h"
#include "Caret.h" #include "Caret.h"
#include "CommonDefines.h" #include "CommonDefines.h"
#include "Draw.h"
#include "Flash.h" #include "Flash.h"
#include "Flags.h" #include "Flags.h"
#include "Frame.h" #include "Frame.h"

View file

@ -3,7 +3,6 @@
#include <stddef.h> #include <stddef.h>
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <string.h>
#include "WindowsWrapper.h" #include "WindowsWrapper.h"

View file

@ -2,7 +2,6 @@
#include "WindowsWrapper.h" #include "WindowsWrapper.h"
#include "Draw.h"
#include "NpChar.h" #include "NpChar.h"
struct NPC_TBL_RECT struct NPC_TBL_RECT

View file

@ -4,16 +4,12 @@
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#include <SDL_thread.h> #include "SDL.h"
#include <SDL_timer.h>
#include <SDL_events.h>
#include "WindowsWrapper.h" #include "WindowsWrapper.h"
#include "CommonDefines.h"
#include "Resource.h" #include "Resource.h"
#include "Sound.h" #include "Sound.h"
#include "Tags.h"
#define PANDUMMY 0xFF #define PANDUMMY 0xFF
#define VOLDUMMY 0xFF #define VOLDUMMY 0xFF
@ -30,9 +26,9 @@ MUSICINFO info;
int gTrackVol[MAXTRACK]; int gTrackVol[MAXTRACK];
int gOrgVolume = 100; int gOrgVolume = 100;
bool bFadeout = false; BOOL bFadeout = FALSE;
bool OrganyaNoteAlloc(unsigned short alloc) BOOL OrganyaNoteAlloc(unsigned short alloc)
{ {
for(int j = 0; j < MAXTRACK; j++) for(int j = 0; j < MAXTRACK; j++)
{ {
@ -51,7 +47,7 @@ bool OrganyaNoteAlloc(unsigned short alloc)
} }
} }
return false; return FALSE;
} }
for(int i = 0; i < alloc; i++) for(int i = 0; i < alloc; i++)
@ -72,7 +68,7 @@ bool OrganyaNoteAlloc(unsigned short alloc)
//this->track = 0; //this->track = 0;
return true; return FALSE;
} }
void OrganyaReleaseNote() void OrganyaReleaseNote()
@ -109,7 +105,7 @@ OCTWAVE oct_wave[8] = {
{ 8,128, 32 }, //7 Oct { 8,128, 32 }, //7 Oct
}; };
bool MakeSoundObject8(signed char *wavep, signed char track, signed char pipi) BOOL MakeSoundObject8(signed char *wavep, signed char track, signed char pipi)
{ {
for (int j = 0; j < 8; j++) for (int j = 0; j < 8; j++)
{ {
@ -150,7 +146,7 @@ bool MakeSoundObject8(signed char *wavep, signed char track, signed char pipi)
} }
} }
return true; return TRUE;
} }
//Playing melody tracks //Playing melody tracks
@ -272,17 +268,17 @@ BOOL InitWaveData100()
} }
//Create org wave //Create org wave
bool MakeOrganyaWave(signed char track, signed char wave_no, signed char pipi) BOOL MakeOrganyaWave(signed char track, signed char wave_no, signed char pipi)
{ {
if(wave_no > 99) if(wave_no > 99)
{ {
printf("WARNING: track %d has out-of-range wave_no %d\n", track, wave_no); printf("WARNING: track %d has out-of-range wave_no %d\n", track, wave_no);
return false; return FALSE;
} }
ReleaseOrganyaObject(track); ReleaseOrganyaObject(track);
MakeSoundObject8(wave_data[wave_no], track, pipi); MakeSoundObject8(wave_data[wave_no], track, pipi);
return true; return TRUE;
} }
//Dram //Dram
@ -525,14 +521,14 @@ void LoadOrganya(const char *name)
SetPlayPointer(0); SetPlayPointer(0);
//Set as loaded //Set as loaded
info.loaded = true; info.loaded = TRUE;
} }
void SetOrganyaPosition(unsigned int x) void SetOrganyaPosition(unsigned int x)
{ {
SetPlayPointer(x); SetPlayPointer(x);
gOrgVolume = 100; gOrgVolume = 100;
bFadeout = false; bFadeout = FALSE;
} }
unsigned int GetOrganyaPosition() unsigned int GetOrganyaPosition()
@ -546,15 +542,15 @@ void PlayOrganyaMusic()
OrganyaStartTimer(info.wait); OrganyaStartTimer(info.wait);
} }
bool ChangeOrganyaVolume(signed int volume) BOOL ChangeOrganyaVolume(signed int volume)
{ {
if (volume >= 0 && volume <= 100) if (volume >= 0 && volume <= 100)
{ {
gOrgVolume = volume; gOrgVolume = volume;
return true; return TRUE;
} }
return false; return FALSE;
} }
void StopOrganyaMusic() void StopOrganyaMusic()
@ -573,12 +569,12 @@ void StopOrganyaMusic()
void SetOrganyaFadeout() void SetOrganyaFadeout()
{ {
bFadeout = true; bFadeout = TRUE;
} }
//Org timer //Org timer
SDL_Thread *OrganyaTimer = NULL; SDL_Thread *OrganyaTimer = NULL;
bool bEndTimer = false; BOOL bEndTimer = FALSE;
int OrganyaPlayTimer(void *ptr) int OrganyaPlayTimer(void *ptr)
{ {
@ -587,7 +583,7 @@ int OrganyaPlayTimer(void *ptr)
//Set time for next step to play //Set time for next step to play
Uint32 NextTick = SDL_GetTicks() + info.wait; Uint32 NextTick = SDL_GetTicks() + info.wait;
while (bEndTimer == false) while (bEndTimer == FALSE)
{ {
if (info.loaded) if (info.loaded)
{ {
@ -615,13 +611,13 @@ int OrganyaPlayTimer(void *ptr)
void OrganyaStartTimer(unsigned int wait) void OrganyaStartTimer(unsigned int wait)
{ {
OrganyaEndTimer(); OrganyaEndTimer();
bEndTimer = false; bEndTimer = FALSE;
OrganyaTimer = SDL_CreateThread(OrganyaPlayTimer, "OrganyaPlayTimer", (void*)NULL); OrganyaTimer = SDL_CreateThread(OrganyaPlayTimer, "OrganyaPlayTimer", (void*)NULL);
} }
void OrganyaEndTimer() void OrganyaEndTimer()
{ {
bEndTimer = true; //Tell thread to end bEndTimer = TRUE; //Tell thread to end
SDL_WaitThread(OrganyaTimer, NULL); //Wait for thread to end SDL_WaitThread(OrganyaTimer, NULL); //Wait for thread to end
OrganyaTimer = NULL; OrganyaTimer = NULL;
} }

View file

@ -1,5 +1,7 @@
#pragma once #pragma once
#include "WindowsWrapper.h"
//Below are Organya song data structures //Below are Organya song data structures
struct NOTELIST { struct NOTELIST {
NOTELIST *from; //Previous address NOTELIST *from; //Previous address
@ -26,8 +28,8 @@ struct TRACKDATA {
//Unique information held in songs //Unique information held in songs
struct MUSICINFO { struct MUSICINFO {
unsigned short wait; unsigned short wait;
bool loaded; BOOL loaded;
bool playing; BOOL playing;
unsigned char line; //Number of lines in one measure unsigned char line; //Number of lines in one measure
unsigned char dot; //Number of dots per line unsigned char dot; //Number of dots per line
unsigned short alloc_note; //Number of allocated notes unsigned short alloc_note; //Number of allocated notes
@ -36,14 +38,14 @@ struct MUSICINFO {
TRACKDATA tdata[16]; TRACKDATA tdata[16];
}; };
bool MakeOrganyaWave(signed char track, signed char wave_no, signed char pipi); BOOL MakeOrganyaWave(signed char track, signed char wave_no, signed char pipi);
void OrganyaPlayData(); void OrganyaPlayData();
void SetPlayPointer(long x); void SetPlayPointer(long x);
void LoadOrganya(const char *name); void LoadOrganya(const char *name);
void SetOrganyaPosition(unsigned int x); void SetOrganyaPosition(unsigned int x);
unsigned int GetOrganyaPosition(); unsigned int GetOrganyaPosition();
void PlayOrganyaMusic(); void PlayOrganyaMusic();
bool ChangeOrganyaVolume(signed int volume); BOOL ChangeOrganyaVolume(signed int volume);
void StopOrganyaMusic(); void StopOrganyaMusic();
void SetOrganyaFadeout(); void SetOrganyaFadeout();
void OrganyaStartTimer(unsigned int wait); void OrganyaStartTimer(unsigned int wait);

View file

@ -1,7 +1,6 @@
#include "PixTone.h" #include "PixTone.h"
#include <math.h> #include <math.h>
#include <stdlib.h>
#include <string.h> #include <string.h>
#include "WindowsWrapper.h" #include "WindowsWrapper.h"

View file

@ -4,6 +4,7 @@
#include "WindowsWrapper.h" #include "WindowsWrapper.h"
#include "CommonDefines.h"
#include "Draw.h" #include "Draw.h"
#include "Escape.h" #include "Escape.h"
#include "KeyControl.h" #include "KeyControl.h"

View file

@ -1,5 +1,7 @@
#include "Shoot.h" #include "Shoot.h"
#include "WindowsWrapper.h"
#include "ArmsItem.h" #include "ArmsItem.h"
#include "Bullet.h" #include "Bullet.h"
#include "Caret.h" #include "Caret.h"

View file

@ -1,12 +1,13 @@
#include "Sound.h" #include "Sound.h"
#include <algorithm> #include <math.h>
#include <cmath>
#include <stdio.h> #include <stdio.h>
#include <string> #include <stdlib.h>
#include <cstring> #include <string.h>
#include <SDL.h> #include "SDL.h"
#include "WindowsWrapper.h"
#include "Organya.h" #include "Organya.h"
#include "PixTone.h" #include "PixTone.h"
@ -14,9 +15,9 @@
#define FREQUENCY 44100 #define FREQUENCY 44100
#ifdef RASPBERRY_PI #ifdef RASPBERRY_PI
#define STREAM_SIZE 0x400 #define STREAM_SIZE 0x400 // Larger buffer to prevent stutter
#else #else
#define STREAM_SIZE (FREQUENCY / 200) #define STREAM_SIZE 0x100 // FREQUENCY/200 rounded to the nearest power of 2 (SDL2 *needs* a power-of-2 buffer size)
#endif #endif
#define clamp(x, y, z) (((x) > (z)) ? (z) : ((x) < (y)) ? (y) : (x)) #define clamp(x, y, z) (((x) > (z)) ? (z) : ((x) < (y)) ? (y) : (x))
@ -219,7 +220,7 @@ void AudioCallback(void *userdata, Uint8 *stream, int len)
//Sound things //Sound things
SOUNDBUFFER* lpSECONDARYBUFFER[SOUND_NO]; SOUNDBUFFER* lpSECONDARYBUFFER[SOUND_NO];
bool InitDirectSound() BOOL InitDirectSound()
{ {
//Init sound //Init sound
SDL_InitSubSystem(SDL_INIT_AUDIO); SDL_InitSubSystem(SDL_INIT_AUDIO);
@ -240,7 +241,7 @@ bool InitDirectSound()
if (audioDevice == 0) if (audioDevice == 0)
{ {
printf("Failed to open audio device\nSDL Error: %s\n", SDL_GetError()); printf("Failed to open audio device\nSDL Error: %s\n", SDL_GetError());
return false; return FALSE;
} }
//Unpause audio device //Unpause audio device
@ -248,7 +249,7 @@ bool InitDirectSound()
//Start organya //Start organya
StartOrganya(); StartOrganya();
return true; return TRUE;
} }
void EndDirectSound() void EndDirectSound()

View file

@ -2,6 +2,8 @@
#include <stddef.h> #include <stddef.h>
#include "WindowsWrapper.h"
#include "PixTone.h" #include "PixTone.h"
class SOUNDBUFFER class SOUNDBUFFER
@ -91,7 +93,7 @@ enum MUSIC_IDS
#define SOUND_NO 0x100 #define SOUND_NO 0x100
extern SOUNDBUFFER* lpSECONDARYBUFFER[SOUND_NO]; extern SOUNDBUFFER* lpSECONDARYBUFFER[SOUND_NO];
bool InitDirectSound(); BOOL InitDirectSound();
void EndDirectSound(); void EndDirectSound();
void PlaySoundObject(int no, int mode); void PlaySoundObject(int no, int mode);
void ChangeSoundFrequency(int no, unsigned long rate); void ChangeSoundFrequency(int no, unsigned long rate);

View file

@ -18,7 +18,6 @@
#include "MyChar.h" #include "MyChar.h"
#include "NpChar.h" #include "NpChar.h"
#include "Organya.h" #include "Organya.h"
#include "Tags.h"
#include "TextScr.h" #include "TextScr.h"
#include "ValueView.h" #include "ValueView.h"

View file

@ -3,7 +3,6 @@
#include "WindowsWrapper.h" #include "WindowsWrapper.h"
#include "Draw.h" #include "Draw.h"
#include "Game.h"
#include "ValueView.h" #include "ValueView.h"
#define VALUEVIEW_MAX 0x10 #define VALUEVIEW_MAX 0x10

View file

@ -35,4 +35,4 @@ struct RECT
int bottom; int bottom;
}; };
bool SystemTask(); BOOL SystemTask();