TITANIC: Adding starfield points loading

This commit is contained in:
Paul Gilbert 2016-07-02 19:48:40 -04:00
parent 46ec1a004b
commit 2ff4d3ed66
6 changed files with 59 additions and 12 deletions

@ -52,7 +52,7 @@
*/
#define VERSION_NUMBER 1
#define HEADER_SIZE 0x640
#define HEADER_SIZE 0x680
Common::File inputFile, outputFile;
Common::PEResources res;
@ -422,6 +422,18 @@ void writeSentenceMappings(const char *name, uint offset, int numValues) {
dataOffset += size;
}
void writeStarfieldPoints() {
outputFile.seek(dataOffset);
inputFile.seek(0x59DE4C - FILE_DIFF);
uint size = 876 * 12;
outputFile.write(inputFile, size);
writeEntryHeader("STARFIELD/POINTS", dataOffset, size);
dataOffset += size;
}
void writeHeader() {
// Write out magic string
const char *MAGIC_STR = "SVTN";
@ -451,6 +463,7 @@ void writeData() {
writeResource("STFONT", 153);
writeResource("STARFIELD", 132);
writeStarfieldPoints();
writeResource("TEXT", "STVOCAB.TXT");
writeResource("TEXT", "JRQUOTES.TXT");

@ -420,13 +420,13 @@ MODULE_OBJS := \
star_control/star_control_sub1.o \
star_control/star_control_sub2.o \
star_control/base_star.o \
star_control/star_array.o \
star_control/star_control_sub4.o \
star_control/star_control_sub5.o \
star_control/star_control_sub6.o \
star_control/star_control_sub7.o \
star_control/star_control_sub8.o \
star_control/star_control_sub9.o \
star_control/star_control_sub10.o \
star_control/star_view.o \
star_control/star_control_sub12.o \
star_control/star_control_sub13.o \

@ -20,9 +20,31 @@
*
*/
#include "titanic/star_control/star_control_sub10.h"
#include "titanic/star_control/star_array.h"
#include "titanic/titanic.h"
namespace Titanic {
#define ARRAY_COUNT 876
CStarArray::CStarArray() {
}
void CStarArray::initialize() {
// Get a reference to the starfield points resource
Common::SeekableReadStream *stream = g_vm->_filesManager->getResource("STARFIELD/POINTS");
assert(stream && stream->size() == (12 * ARRAY_COUNT));
_data.resize(ARRAY_COUNT);
for (int idx = 0; idx < ARRAY_COUNT; ++idx) {
// Get the next set of values
int v1 = stream->readUint32LE();
int v2 = stream->readUint32LE();
stream->readUint32LE();
// Pre-process them
// TODO
}
}
} // End of namespace Titanic

@ -20,19 +20,30 @@
*
*/
#ifndef TITANIC_STAR_CONTROL_SUB10_H
#define TITANIC_STAR_CONTROL_SUB10_H
#ifndef TITANIC_STAR_ARRAY_H
#define TITANIC_STAR_ARRAY_H
#include "common/array.h"
namespace Titanic {
class CStarControlSub10 {
class CStarArray {
struct CStarArrayEntry {
double _v1;
double _v2;
double _v3;
};
private:
int _field0;
int _field4;
Common::Array<CStarArrayEntry> _data;
public:
CStarControlSub10() : _field0(0), _field4(0) {}
CStarArray();
/**
* Initialize the array
*/
void initialize();
};
} // End of namespace Titanic
#endif /* TITANIC_STAR_CONTROL_SUB10_H */
#endif /* TITANIC_STAR_ARRAY_H */

@ -43,6 +43,7 @@ void CStarControlSub1::load(SimpleFile *file, int param) {
bool CStarControlSub1::initDocument() {
warning("CStarControlSub1::initDocument");
_starArray.initialize();
return true;
}

@ -23,12 +23,12 @@
#ifndef TITANIC_STAR_CONTROL_SUB1_H
#define TITANIC_STAR_CONTROL_SUB1_H
#include "titanic/star_control/star_array.h"
#include "titanic/star_control/star_control_sub2.h"
#include "titanic/star_control/star_control_sub5.h"
#include "titanic/star_control/star_control_sub7.h"
#include "titanic/star_control/star_control_sub8.h"
#include "titanic/star_control/star_control_sub9.h"
#include "titanic/star_control/star_control_sub10.h"
namespace Titanic {
@ -37,7 +37,7 @@ private:
CStarControlSub7 _sub7;
CStarControlSub8 _sub8;
CStarControlSub9 _sub9;
CStarControlSub10 _sub10;
CStarArray _starArray;
CStarControlSub5 _sub5;
int _field7DA8;
int _field7DAC;