chore(binana): add files

This commit is contained in:
phaneron 2024-07-07 03:00:06 -04:00
commit aa605d1aef
14 changed files with 305 additions and 0 deletions

2
.gitignore vendored Normal file
View file

@ -0,0 +1,2 @@
jest
.vscode

15
3.3.5a/include/main.h Normal file
View file

@ -0,0 +1,15 @@
// Types
#include "storm/array.h"
#include "storm/list.h"
#include "tempest/box.h"
#include "tempest/matrix.h"
#include "tempest/plane.h"
#include "tempest/quaternion.h"
#include "tempest/range.h"
#include "tempest/rect.h"
#include "tempest/sphere.h"
#include "tempest/vector.h"
// include files that define the use of template classes
#include "storm/array/uint32_t.h"

View file

@ -0,0 +1,29 @@
#ifndef STORM_ARRAY_H
#define STORM_ARRAY_H
#define STORM_TS_BASE_ARRAY(type) typedef struct TSBaseArray_##type TSBaseArray_##type; \
struct TSBaseArray_##type { \
void** vtable; \
uint32_t m_alloc; \
uint32_t m_count; \
type* m_data; \
};
#define STORM_TS_FIXED_ARRAY(type) typedef struct TSFixedArray_##type TSFixedArray_##type; \
struct TSFixedArray_##type { \
void** vtable; \
uint32_t m_alloc; \
uint32_t m_count; \
type* m_data; \
};
#define STORM_TS_GROWABLE_ARRAY(type) typedef struct TSGrowableArray_##type TSGrowableArray_##type; \
struct TSGrowableArray_##type { \
void** vtable; \
uint32_t m_alloc; \
uint32_t m_count; \
type* m_data; \
uint32_t m_chunk; \
};
#endif

View file

@ -0,0 +1,10 @@
#ifndef STORM_ARRAY_UINT32_T_H
#define STORM_ARRAY_UINT32_T_H
#include <stdint.h>
#include "storm/array.h"
STORM_TS_GROWABLE_ARRAY(uint32_t)
#endif

View file

@ -0,0 +1,30 @@
#ifndef STORM_LIST_H
#define STORM_LIST_H
#include <stdint.h>
// to make an object self referential
// forward-declare 'struct Object_type' as 'Object_type'
// then define 'struct Object_type'
// TSLink<T>
#define STORM_TS_LINK(T) typedef struct TSLink_##T TSLink_##T; \
struct TSLink_##T { \
TSLink_##T* m_prevlink; \
T* m_next; \
};
// TSLinkedNode<T>
#define STORM_TS_LINKED_NODE(T) typedef struct TSLinkedNode_##T TSLinkedNode_##T; \
struct TSLinkedNode_##T { \
TSLink_##T m_link; \
};
// TSList<T>
#define STORM_TS_LIST(T) typedef struct TSList_##T TSList_##T##; \
struct TSList_##T { \
ptrdiff_t m_linkoffset; \
TSLink_##T m_terminator; \
};
#endif

View file

@ -0,0 +1,21 @@
#ifndef TEMPEST_BOX_H
#define TEMPEST_BOX_H
#include "tempest/vector.h"
#include "tempest/range.h"
typedef struct CAaBox CAaBox;
typedef struct CBoundingBox CBoundingBox;
struct CAaBox {
C3Vector b;
C3Vector t;
};
struct CBoundingBox {
CRange x;
CRange y;
CRange z;
};
#endif

View file

@ -0,0 +1,55 @@
#ifndef TEMPEST_MATRIX_H
#define TEMPEST_MATRIX_H
typedef struct C33Matrix C33Matrix;
typedef struct C34Matrix C34Matrix;
typedef struct C44Matrix C44Matrix;
struct C33Matrix {
float a0;
float a1;
float a2;
float b0;
float b1;
float b2;
float c0;
float c1;
float c2;
};
struct C34Matrix {
float a0;
float a1;
float a2;
float b0;
float b1;
float b2;
float c0;
float c1;
float c2;
float d0;
float d1;
float d2;
};
struct C44Matrix {
float a0;
float a1;
float a2;
float a3;
float b0;
float b1;
float b2;
float b3;
float c0;
float c1;
float c2;
float c3;
float d0;
float d1;
float d2;
float d3;
};
#endif

View file

@ -0,0 +1,13 @@
#ifndef TEMPEST_PLANE_H
#define TEMPEST_PLANE_H
#include "tempest/vector.h"
typedef struct C4Plane C4Plane;
struct C4Plane {
C3Vector n;
float d;
};
#endif

View file

@ -0,0 +1,13 @@
#ifndef TEMPEST_QUATERNION_H
#define TEMPEST_QUATERNION_H
typedef struct C4Quaternion C4Quaternion;
struct C4Quaternion {
float x;
float y;
float z;
float w;
};
#endif

View file

@ -0,0 +1,19 @@
#ifndef TEMPEST_RANGE_H
#define TEMPEST_RANGE_H
#include <stdint.h>
typedef struct CRange CRange;
typedef struct CiRange CiRange;
struct CRange {
float l;
float h;
};
struct CiRange {
int32_t l;
int32_t h;
};
#endif

View file

@ -0,0 +1,20 @@
#ifndef TEMPEST_RECT_H
#define TEMPEST_RECT_H
#include <stdint.h>
struct CRect {
float minY; // t
float minX; // l
float maxY; // b
float maxX; // r
};
struct CiRect {
int32_t minY;
int32_t minX;
int32_t maxY;
int32_t maxX;
};
#endif

View file

@ -0,0 +1,11 @@
#ifndef TEMPEST_SPHERE_H
#define TEMPEST_SPHERE_H
#include "tempest/vector.h"
struct CAaSphere {
C3Vector n;
float d;
};
#endif

View file

@ -0,0 +1,42 @@
#ifndef TEMPEST_VECTOR_H
#define TEMPEST_VECTOR_H
#include <stdint.h>
typedef struct C2Vector C2Vector;
typedef struct C3Vector C3Vector;
typedef struct C4Vector C4Vector;
typedef struct CImVector CImVector;
struct C2Vector {
float x;
float y;
};
struct C2iVector {
int32_t x;
int32_t y;
};
struct C3Vector {
float x;
float y;
float z;
};
struct C4Vector {
float x;
float y;
float z;
float w;
};
struct CImVector {
uint8_t b;
uint8_t g;
uint8_t r;
uint8_t a;
};
#endif

25
README.md Normal file
View file

@ -0,0 +1,25 @@
# binana
This repository hosts some work related to studying the original game binaries.
You can use the information here to get a headstart when working on the [Whoa project](https://github.com/whoahq/whoa).
# Header files
To make reverse engineering easier, C header files matching the original memory layout are provided.
The header `<game version>/include/main.h` to import type definitions into your analysis repository.
Headers should be restricted at all times to the C programming language only. C++ syntax will break type analysis.
To convert C++ namespaces, use double-underscores. For instance:
```cpp
void Name::Space::Thing();
```
should become:
```c
void Name__Space__Thing();
```