Merge branch 'master' into addBetterMakefileDebugFlags
This commit is contained in:
commit
46d4d1b095
7 changed files with 116 additions and 77 deletions
19
.gitignore
vendored
19
.gitignore
vendored
|
@ -1,7 +1,7 @@
|
||||||
# Exclude obj directory (object files for Makefile build)
|
# Exclude obj directory (object files for Makefile build)
|
||||||
/obj
|
/obj
|
||||||
|
|
||||||
# Exclude the converted resource files
|
# Exclude converted resource files
|
||||||
src/Resource
|
src/Resource
|
||||||
|
|
||||||
# Exclude .dat and .rec files in build directories (avoid Config.dat, 290.rec and others)
|
# Exclude .dat and .rec files in build directories (avoid Config.dat, 290.rec and others)
|
||||||
|
@ -14,19 +14,19 @@ build_jp/*.rec
|
||||||
msvc2003/devilution/orig.asm
|
msvc2003/devilution/orig.asm
|
||||||
msvc2003/devilution/compare.asm
|
msvc2003/devilution/compare.asm
|
||||||
|
|
||||||
# Exclude build output on Linux (exclude normally produced executable 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/CSE2d
|
||||||
build_en/DoConfig
|
build_en/DoConfig
|
||||||
build_en/DoConfigd
|
build_en/DoConfigd
|
||||||
|
|
||||||
build_jp/CSE2
|
build_jp/CSE2
|
||||||
build_jp/CSE2d
|
build_jp/CSE2d
|
||||||
build_jp/DoConfig
|
build_jp/DoConfig
|
||||||
build_jp/DoConfigd
|
build_jp/DoConfigd
|
||||||
|
build_en/*.out
|
||||||
|
build_jp/*.out
|
||||||
|
|
||||||
|
# Exclude PE executables in the build folder (and .exe.manifest files)
|
||||||
# Exclude executables in the build folder (and .exe.manifest files)
|
|
||||||
build_en/*.exe
|
build_en/*.exe
|
||||||
build_en/*.exe.manifest
|
build_en/*.exe.manifest
|
||||||
build_jp/*.exe
|
build_jp/*.exe
|
||||||
|
@ -46,12 +46,3 @@ msvc2003/Debug
|
||||||
msvc2003/Release
|
msvc2003/Release
|
||||||
msvc2003/Debug (Japanese)
|
msvc2003/Debug (Japanese)
|
||||||
msvc2003/Release (Japanese)
|
msvc2003/Release (Japanese)
|
||||||
|
|
||||||
# Exclude VS Code folder
|
|
||||||
.vscode/*
|
|
||||||
|
|
||||||
# Include generically useful files for VS Code users
|
|
||||||
!.vscode/settings.json
|
|
||||||
!.vscode/tasks.json
|
|
||||||
!.vscode/launch.json
|
|
||||||
!.vscode/extensions.json
|
|
||||||
|
|
|
@ -2126,6 +2126,14 @@ addr = 0x46E9E0
|
||||||
name = "ActNpc360"
|
name = "ActNpc360"
|
||||||
addr = 0x46EA90
|
addr = 0x46EA90
|
||||||
|
|
||||||
|
[[func]]
|
||||||
|
name = "LoadNpcTable"
|
||||||
|
addr = 0x472400
|
||||||
|
|
||||||
|
[[func]]
|
||||||
|
name = "ReleaseNpcTable"
|
||||||
|
addr = 0x472710
|
||||||
|
|
||||||
[[func]]
|
[[func]]
|
||||||
name = "InitBossChar"
|
name = "InitBossChar"
|
||||||
addr = 0x472740
|
addr = 0x472740
|
||||||
|
|
|
@ -52,8 +52,7 @@ BOOL LoadMapData2(const char *path_map)
|
||||||
fread(&dum, 1, 1, fp);
|
fread(&dum, 1, 1, fp);
|
||||||
// Get width and height
|
// Get width and height
|
||||||
#ifdef NONPORTABLE
|
#ifdef NONPORTABLE
|
||||||
// This fails on big-endian hardware, and platforms
|
// This fails on big-endian hardware, and platforms where short is not two bytes long.
|
||||||
// where short is not two bytes long.
|
|
||||||
fread(&gMap.width, 2, 1, fp);
|
fread(&gMap.width, 2, 1, fp);
|
||||||
fread(&gMap.length, 2, 1, fp);
|
fread(&gMap.length, 2, 1, fp);
|
||||||
#else
|
#else
|
||||||
|
|
|
@ -14,15 +14,16 @@ void ReadyMapName(const char *str)
|
||||||
{
|
{
|
||||||
int a;
|
int a;
|
||||||
|
|
||||||
//Handle "Studio Pixel presents" text in the intro
|
// Handle "Studio Pixel presents" text in the intro, using an obfuscated string
|
||||||
unsigned char presentText[24] = {
|
unsigned char presentText[24] =
|
||||||
|
{
|
||||||
#ifdef JAPANESE
|
#ifdef JAPANESE
|
||||||
// "ŠJ”ŽºPixel presents"
|
// "開発室Pixel presents"
|
||||||
0x8A - 1, // ŠJ
|
0x8A - 1, // 開
|
||||||
0x4A - 1,
|
0x4A - 1,
|
||||||
0x94 - 1, // ”
|
0x94 - 1, // 発
|
||||||
0xAD - 1,
|
0xAD - 1,
|
||||||
0x8E - 1, // Žº
|
0x8E - 1, // 室
|
||||||
0xBA - 1,
|
0xBA - 1,
|
||||||
'P' - 1,
|
'P' - 1,
|
||||||
'i' - 1,
|
'i' - 1,
|
||||||
|
@ -92,7 +93,7 @@ void ReadyMapName(const char *str)
|
||||||
|
|
||||||
void PutMapName(BOOL bMini)
|
void PutMapName(BOOL bMini)
|
||||||
{
|
{
|
||||||
// 'unused_rect' isn't the original name. The Linux port optimised this out, so there's no name for it.
|
// 'unused_rect' isn't the original name. The Linux port optimized this out, so there's no name for it.
|
||||||
RECT unused_rect = {0, 0, 160, 16};
|
RECT unused_rect = {0, 0, 160, 16};
|
||||||
|
|
||||||
if (bMini)
|
if (bMini)
|
||||||
|
|
|
@ -1,60 +1,98 @@
|
||||||
#include "NpcTbl.h"
|
#include "NpcTbl.h"
|
||||||
|
|
||||||
|
#include <stddef.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
#include "WindowsWrapper.h"
|
||||||
|
|
||||||
#include "File.h"
|
#include "File.h"
|
||||||
#include "Generic.h"
|
#include "Generic.h"
|
||||||
#include "NpcAct.h"
|
#include "NpcAct.h"
|
||||||
|
|
||||||
NPC_TABLE *gNpcTable;
|
NPC_TABLE *gNpcTable;
|
||||||
|
|
||||||
bool LoadNpcTable(const char *path)
|
BOOL LoadNpcTable(const char *path)
|
||||||
{
|
{
|
||||||
const long size = GetFileSizeLong(path);
|
FILE *fp;
|
||||||
if (size == -1)
|
long n;
|
||||||
return false;
|
long num;
|
||||||
|
unsigned long size;
|
||||||
|
|
||||||
const long num = size / 0x18;
|
size = GetFileSizeLong(path);
|
||||||
|
if (size == -1)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
num = size / 0x18;
|
||||||
|
|
||||||
gNpcTable = (NPC_TABLE*)malloc(num * sizeof(NPC_TABLE));
|
gNpcTable = (NPC_TABLE*)malloc(num * sizeof(NPC_TABLE));
|
||||||
if (gNpcTable == NULL)
|
if (gNpcTable == NULL)
|
||||||
return false;
|
return FALSE;
|
||||||
|
|
||||||
FILE *fp = fopen(path, "rb");
|
fp = fopen(path, "rb");
|
||||||
if (fp == NULL)
|
if (fp == NULL)
|
||||||
return false;
|
{
|
||||||
|
free(gNpcTable);
|
||||||
|
gNpcTable = NULL;
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
for (long n = 0; n < num; n++) //bits
|
#ifdef NONPORTABLE
|
||||||
gNpcTable[n].bits = File_ReadLE16(fp);
|
for (n = 0; n < num; n++) //bits
|
||||||
for (long n = 0; n < num; n++) //life
|
fread(&gNpcTable[n].bits, 2, 1, fp);
|
||||||
gNpcTable[n].life = File_ReadLE16(fp);
|
for (n = 0; n < num; n++) //life
|
||||||
for (long n = 0; n < num; n++) //surf
|
fread(&gNpcTable[n].life, 2, 1, fp);
|
||||||
|
for (n = 0; n < num; n++) //surf
|
||||||
fread(&gNpcTable[n].surf, 1, 1, fp);
|
fread(&gNpcTable[n].surf, 1, 1, fp);
|
||||||
for (long n = 0; n < num; n++) //destroy_voice
|
for (n = 0; n < num; n++) //destroy_voice
|
||||||
fread(&gNpcTable[n].destroy_voice, 1, 1, fp);
|
fread(&gNpcTable[n].destroy_voice, 1, 1, fp);
|
||||||
for (long n = 0; n < num; n++) //hit_voice
|
for (n = 0; n < num; n++) //hit_voice
|
||||||
fread(&gNpcTable[n].hit_voice, 1, 1, fp);
|
fread(&gNpcTable[n].hit_voice, 1, 1, fp);
|
||||||
for (long n = 0; n < num; n++) //size
|
for (n = 0; n < num; n++) //size
|
||||||
fread(&gNpcTable[n].size, 1, 1, fp);
|
fread(&gNpcTable[n].size, 1, 1, fp);
|
||||||
for (long n = 0; n < num; n++) //exp
|
for (n = 0; n < num; n++) //exp
|
||||||
gNpcTable[n].exp = File_ReadLE32(fp);
|
fread(&gNpcTable[n].exp, 4, 1, fp);
|
||||||
for (long n = 0; n < num; n++) //damage
|
for (n = 0; n < num; n++) //damage
|
||||||
gNpcTable[n].damage = File_ReadLE32(fp);
|
fread(&gNpcTable[n].damage, 4, 1, fp);
|
||||||
for (long n = 0; n < num; n++) //hit
|
for (n = 0; n < num; n++) //hit
|
||||||
fread(&gNpcTable[n].hit, 4, 1, fp);
|
fread(&gNpcTable[n].hit, 4, 1, fp);
|
||||||
for (long n = 0; n < num; n++) //view
|
for (n = 0; n < num; n++) //view
|
||||||
fread(&gNpcTable[n].view, 4, 1, fp);
|
fread(&gNpcTable[n].view, 4, 1, fp);
|
||||||
|
#else
|
||||||
|
for (n = 0; n < num; n++) //bits
|
||||||
|
gNpcTable[n].bits = File_ReadLE16(fp);
|
||||||
|
for (n = 0; n < num; n++) //life
|
||||||
|
gNpcTable[n].life = File_ReadLE16(fp);
|
||||||
|
for (n = 0; n < num; n++) //surf
|
||||||
|
fread(&gNpcTable[n].surf, 1, 1, fp);
|
||||||
|
for (n = 0; n < num; n++) //destroy_voice
|
||||||
|
fread(&gNpcTable[n].destroy_voice, 1, 1, fp);
|
||||||
|
for (n = 0; n < num; n++) //hit_voice
|
||||||
|
fread(&gNpcTable[n].hit_voice, 1, 1, fp);
|
||||||
|
for (n = 0; n < num; n++) //size
|
||||||
|
fread(&gNpcTable[n].size, 1, 1, fp);
|
||||||
|
for (n = 0; n < num; n++) //exp
|
||||||
|
gNpcTable[n].exp = File_ReadLE32(fp);
|
||||||
|
for (n = 0; n < num; n++) //damage
|
||||||
|
gNpcTable[n].damage = File_ReadLE32(fp);
|
||||||
|
for (n = 0; n < num; n++) //hit
|
||||||
|
fread(&gNpcTable[n].hit, 4, 1, fp);
|
||||||
|
for (n = 0; n < num; n++) //view
|
||||||
|
fread(&gNpcTable[n].view, 4, 1, fp);
|
||||||
|
#endif
|
||||||
|
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
return true;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ReleaseNpcTable()
|
void ReleaseNpcTable()
|
||||||
{
|
{
|
||||||
if (gNpcTable)
|
if (gNpcTable)
|
||||||
|
{
|
||||||
free(gNpcTable);
|
free(gNpcTable);
|
||||||
|
gNpcTable = NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//Npc function table
|
//Npc function table
|
||||||
|
|
|
@ -2,6 +2,8 @@
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
|
#include "WindowsWrapper.h"
|
||||||
|
|
||||||
#include "Draw.h"
|
#include "Draw.h"
|
||||||
#include "NpChar.h"
|
#include "NpChar.h"
|
||||||
|
|
||||||
|
@ -29,7 +31,7 @@ struct NPC_TABLE
|
||||||
|
|
||||||
extern NPC_TABLE *gNpcTable;
|
extern NPC_TABLE *gNpcTable;
|
||||||
|
|
||||||
bool LoadNpcTable(const char *path);
|
BOOL LoadNpcTable(const char *path);
|
||||||
void ReleaseNpcTable();
|
void ReleaseNpcTable();
|
||||||
|
|
||||||
//NPC Function table
|
//NPC Function table
|
||||||
|
|
Loading…
Add table
Reference in a new issue